資源簡介
某公司雇員(employee)包括經理(Manager)、技術人員(Technician)和銷售員(Saleman)。開發部經理(developermanager)既是經理也是技術人員,銷售部經理(salesmanager)既是經理也是銷售員。
以employee類為虛基類,派生出manager、technician和saleman類,再進一步派生出developermanager和salesmanager類。
Employee類的屬性包括姓名、職工號、工資級別、月薪(實發基本工資加業績工資);操作包括月薪計算函數pay(),該函數要求輸入請假天數,扣除應扣工資后,得出實發基本工資。
Technician類派生的屬性有每小時附加酬金和當月工作時數,以及研究完成進度系數,業績工資為三者之積。也包括同名的pay函數,工資總額為基本工資加業績工資。
Saleman類派生的屬性有當月銷售額和酬金提取百分比,業績工資為兩者之積。也包括同名的pay函數,工資總額為基本工資加業績工資。
Manager類派生的屬性有固定獎金額和業績系數,業績工資為兩者之積。工資總額也為基本工資加業績工資。而在developermanager類中,pay函數是將作為經理和作為技術人員業績工資之和的一半作為業績工資。在salesmanager類中,pay函數則是經理的固定獎金額的一半,加上部門總銷售額與提成比例之積,這是業績工資。

代碼片段和文件信息
#include
#include
using?namespace?std;
static?int?Grades[]={50060070010001500200025003000};
class?employee{
protected:
string?name;//姓名
int?ID;//職工號
int?grade;//工資級別
double?salary;//月
double?base_salary;//基本月薪
double?career_salary;//業績工資
public:
employee(string=““int=0int=0);
virtual?void?pay();//月薪計算函數
void?show();
double?getsalary(){return?salary;}
double?getbase_salary(){return?base_salary;}
double?getcareer_salary(){return?career_salary;}
};
employee::employee(string?nnint?idint?gr){
name=nn;
ID?=?id;
grade?=?gr;?
salary=0;//月薪
base_salary=0;//基本月薪
career_salary=0;//業績工資
}
void?employee::show(){
cout< }
void?employee::pay(){
int?days;
cout<<“\n普通員工\n請輸入請假天數:\n“;
cin>>days;
base_salary?=?Grades[grade]*(23?-?days)/23;
career_salary?=?base_salary/2;//普通員工業績工資為基本工資的一半
salary?=?base_salary+career_salary;
}
class?manager:virtual?public?employee{//虛基類
protected:
double?prize;//固定獎金額
double?factor;//業績系數
public:
manager(string=““int=0int=0double=0);
void?pay();
};
manager::manager(string?nnint?idint?grdouble?pr):employee(nnidgr){
prize?=?pr;//固定獎金額
factor?=?0;
}
void?manager::pay(){
int?days;
cout<<“\n經理\n請輸入請假天數:\n“;
cin>>days;
cout<<“請輸入業績系數:\n“;
cin>>factor;
base_salary?=?Grades[grade]*(23?-?days)/23;
career_salary?=?prize*factor*(23?-?days)/23;
salary?=?base_salary?+?career_salary?;
}
class?technician:virtual?public?employee{
protected:
double?hours;//月工作時數
double?perhour;//每小時附加酬金
double?shfactor;//研究進度系數
public:
technician(string=““int=0int=0double=0);
void?pay();
};
technician::technician(string?nnint?idint?grdouble?phr):employee(nnidgr){
hours?=?0;
perhour?=?phr;//每小時附加酬金
shfactor?=?0;
}
void?technician::pay(){
int?days;
cout<<“\n技術人員\n請輸入請假天數:\n“;
cin>>days;
cout<<“請輸入研究進度系數:\n“;
cin>>shfactor;
hours=8*(23-days);
base_salary?=?Grades[grade]*(23?-?days)/23;
career_salary?=?perhour*hours*shfactor*(23?-?days)/23;
salary=?base_salary?+?career_salary?;
}
class?salesman:virtual?public?employee{
protected:
double?amount;//銷售額
double?slfactor;//提成比例
public:
salesman(string=““int=0int=0double=0);
void?pay();
};?
salesman::salesman(string?nnint?idint?grdouble?slfac):employee(nnidgr)
{
amount?=?0;
slfactor?=?slfac;//提成比例
}
void?salesman::pay(){
int?days;
cout<<“\n銷售員\n請輸入請假天數:\n“;
cin>>days;
cout<<“請輸入銷售額:\n“;
cin>>amount;
base_salary?=?Grades[grade]*(23?-?days)/23;
career_salary?=?amount*slfactor;
salary?=?base_salary?+?career_salary?;
}
class?developermanager:public?managerpublic?technician?{
public:
developermanager(string=““int?id=0int?gr=0double?pr=0?double?phr=0);
void?pay();
};
developermanager::developermanager(string?nnint?idint?grdouble?prdouble?phr)
:manager(nnidgrpr)technician(nnidgrphr)employee(nnidgr){}
void?developermanager::pay(){
int?days;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????48640??2004-12-05?09:45??esp8_1.opt
?????文件???????1287??2004-12-05?09:37??esp8_1.plg
?????文件?????561244??2004-12-05?09:37??Debug\esp8_1.exe
?????文件?????799688??2004-12-05?09:37??Debug\esp8_1.ilk
?????文件?????297331??2004-12-05?09:37??Debug\esp8_1.obj
?????文件????2067056??2004-12-05?08:32??Debug\esp8_1.pch
?????文件????1115136??2004-12-05?09:37??Debug\esp8_1.pdb
?????文件??????74752??2004-12-05?09:37??Debug\vc60.idb
?????文件?????110592??2004-12-05?09:37??Debug\vc60.pdb
?????文件???????4892??2004-12-05?09:37??esp8_1.cpp
?????文件???????4284??2004-12-05?09:45??esp8_1.dsp
?????文件????????520??2004-12-05?08:32??esp8_1.dsw
?????文件??????33792??2004-12-05?09:45??esp8_1.ncb
?????目錄??????????0??2008-12-05?16:26??Debug
-----------?---------??----------?-----??----
??????????????5119214????????????????????14
- 上一篇:C語言解碼JPG圖片源代碼
- 下一篇:秒表定時器+中斷,帶proteus仿真
評論
共有 條評論