Skip to content

Commit

Permalink
Merge pull request Light-City#185 from ReJimp/patch-1
Browse files Browse the repository at this point in the history
Update  practical_exercises/10_day_practice/day6/虚函数/编程实例.cpp
  • Loading branch information
Light-City committed Apr 10, 2022
2 parents ffa41e5 + 3822cf7 commit dcc63ea
Showing 1 changed file with 62 additions and 62 deletions.
124 changes: 62 additions & 62 deletions practical_exercises/10_day_practice/day6/虚函数/编程实例.cpp
Original file line number Diff line number Diff line change
@@ -1,92 +1,92 @@
/*
某公司有经理、销售员、小时工等多类人员。经理按周计算薪金;销售员每月底薪800元,
然后加销售提成,每销售1件产品提取销售利润的5%;小时工按小时计算薪金。每类人员都有姓名和身份证号等数据。
为简化问题,把各类人员的共有信息抽象成基类Employee,其他人员则继承该类的功能。
某公司有经理、销售员、小时工等多类人员。经理按周计算薪金;销售员每月底薪800元,
然后加销售提成,每销售1件产品提取销售利润的5%;小时工按小时计算薪金。每类人员都有姓名和身份证号等数据。
为简化问题,把各类人员的共有信息抽象成基类Employee,其他人员则继承该类的功能。
*/
#include <iostream>
#include <string>
using namespace std;
class Employee{
public:
Employee(string Name ,string id){ name=Name; Id=id; }
string getName(){ return name; } //返回姓名
string getID(){ return Id; } //返回身份证号
float getSalary(){ return 0.0; } //返回薪水
void print(){ //输出姓名和身份证号
cout<<"姓名: "<<name<<"\t\t 编号: "<<Id<<endl;
public:
Employee(string Name ,string id) : name(Name), Id(id){ }
string getName() const { return name; } //返回姓名
string getID() const { return Id; } //返回身份证号
virtual float getSalary() const { return 0.0; } //返回薪水
virtual void print() const { //输出姓名和身份证号
cout<<"姓名: "<<name<<"\t\t 编号: "<<Id<<endl;
}
private:
string name;
string Id;
private:
string name;
string Id;
};

class Manager:public Employee{
public:
Manager(string Name,string id,int week):Employee(Name,id){
WeeklySalary=week*1000;
}
float getSalary(){ return WeeklySalary; } //获取经理的周薪
void print(){ //打印经理姓名、身份证、周薪
cout<<"经理:"<<getName()<<"\t\t 编号: "<<getID()
<<"\t\t 总工资: "<<getSalary()<<endl;
}
private:
float WeeklySalary; //周薪
public:
Manager(string Name,string id,int week):Employee(Name,id){
WeeklySalary=week*1000;
}
float getSalary() const { return WeeklySalary; } //获取经理的周薪
void print() const { //打印经理姓名、身份证、周薪
cout<<"经理:"<<getName()<<"\t\t 编号: "<<getID()
<<"\t\t 总工资: "<<getSalary()<<endl;
}
private:
float WeeklySalary; //周薪
};


class SaleWorker:public Employee{
public:
SaleWorker(string name,string id,int profit,int x):Employee(name,id){
workerMoney=baseMoney+x*0.05*profit;
}
float getSalary(){
return workerMoney;
}
void print(){
cout<<"销售员:"<<getName()<<"\t\t 编号: "<<getID()
<<"\t\t 总工资: "<<getSalary()<<endl;
}
private:
float baseMoney=800.0;
float workerMoney;
public:
SaleWorker(string name,string id,int profit,int x):Employee(name,id){
workerMoney=baseMoney+x*0.05*profit;
}
float getSalary() const {
return workerMoney;
}
void print() const {
cout<<"销售员:"<<getName()<<"\t\t 编号: "<<getID()
<<"\t\t 总工资: "<<getSalary()<<endl;
}
private:
float baseMoney=800.0;
float workerMoney;
};

class HourWorker:public Employee{
public:
HourWorker(string name,string id,int h):Employee(name,id){
TotalMoney=h*hourMoney;
}
float getSalary(){
return TotalMoney;
}
void print(){
cout<<"小时工:"<<getName()<<"\t\t 编号: "<<getID()
<<"\t\t 总工资: "<<getSalary()<<endl;
}
private:
float hourMoney=100.0;
float TotalMoney;
public:
HourWorker(string name,string id,int h):Employee(name,id){
TotalMoney=h*hourMoney;
}
float getSalary() const {
return TotalMoney;
}
void print() const {
cout<<"小时工:"<<getName()<<"\t\t 编号: "<<getID()
<<"\t\t 总工资: "<<getSalary()<<endl;
}
private:
float hourMoney=100.0;
float TotalMoney;
};


int main(){
cout<<"请输入工作周:";
cout<<"请输入工作周:";
int week;
cin>>week;
Manager m("小王","11111111",week);
Manager m("小王","11111111",week);
m.print();
cout<<"请输入销售利润:";
cout<<"请输入销售利润:";
int profit;
cin>>profit;
cout<<"请输入销售件数:";
cout<<"请输入销售件数:";
int x;
cin>>x;
SaleWorker s("小李","222222",profit,x);
SaleWorker s("小李","222222",profit,x);
s.print();
cout<<"请输入工作小时:";
cout<<"请输入工作小时:";
int hour;
cin>>hour;
HourWorker h("小何","333333",hour);
HourWorker h("小何","333333",hour);
h.print();
system("pause");
return 0;
}
}

0 comments on commit dcc63ea

Please sign in to comment.