人员信息管理

来源:互联网 发布:c语言排序算法最快 编辑:程序博客网 时间:2024/06/02 11:40
//275 8_8 .cpp#include <iostream>#include <cstring>using namespace std;class employee{protected:char name[20];int individualNo;int grade;float accumpay;static int employeeNo;public: employee();~employee();virtual void pay()=0;                //计算月薪函数(纯虚函数)virtual void promote(int inc=0);     //计算升级函数(虚函数)void setname(char *);char *Getname();int GetindividualNo();int Getgrade();float Getaccumpay();};int employee::employeeNo = 1000;employee::employee(){individualNo = employeeNo++;grade = 1;accumpay = 0;}employee::~employee(){}void employee::promote(int inc){grade += inc;}void employee::setname(char *names){strcpy_s(name, names);}char *employee::Getname(){return name;}int employee::GetindividualNo(){return individualNo;}int employee::Getgrade(){return grade;}float employee::Getaccumpay(){return accumpay;}class technician :public employee{private:float hourlyprice;int workhours;public:technician();void Setworkhours(int wh);void pay();void promote(int);                  //升级函数};technician::technician(){hourlyprice = 100;}void technician::Setworkhours(int wh){workhours= wh;}void technician::pay(){accumpay = hourlyprice*workhours;}void technician::promote(int){employee::promote(2);                //调用基类升级函数}class salesman :virtual public employee{protected:float comonrate;float saleaccount;public:salesman();void setsale(float sl);void pay();void promote(int);              //升级函数};salesman::salesman(){comonrate = 0.4;}void salesman::setsale(float sl){saleaccount = sl;}void salesman::pay(){accumpay = saleaccount*comonrate;}void salesman::promote(int){employee::promote(3);         //调用基类升级函数}class manager :virtual public employee{protected:float money;public:manager();void pay();void promote(int);              //升级函数};manager::manager(){money = 5000;}void manager::pay(){accumpay = money;}void manager::promote(int){employee::promote(4);           //调用基类升级函数}class salemanager :public salesman, public manager{public:salemanager();void pay();void promote(int);             //升级函数};salemanager::salemanager(){comonrate = 0.5;money = 6000;}void salemanager::pay(){accumpay = money + saleaccount*comonrate;}void salemanager::promote(int){employee::promote(5);         //调用基类升级函数}int main(){technician t1;salesman s1;manager m1;salemanager sm1;char namestr[20];employee *emp[4] = { &t1, &s1, &m1, &sm1 };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 << "请输入推销员" << s1.Getname() << "的销售额:";int w;cin >> w;s1.setsale(w);cout << "请输入销售经理" << sm1.Getname() << "的销售额:";int we;cin >> we;sm1.setsale(we);for (int i = 0; i < 4;i++){emp[i]->pay();cout << emp[i]->Getname() << "编号" << emp[i]->GetindividualNo() << "级别为" << emp[i]->Getgrade() << "工资为" << emp[i]->Getaccumpay() << endl;}system("pause");return 0;}

1 0