求,《精通C#与.NET 4.0数据库开发》视频教程,拜谢!
发布网友
发布时间:2022-04-19 22:55
我来回答
共2个回答
热心网友
时间:2023-07-11 20:24
//难度不大.只是很麻烦...下面的程序,基本上能满足你的要求..
#include <iostream>
using namespace std;
class Employee
{
protected:
double salary;
public:
Employee(double sly=1000.0):salary(sly){}
virtual void ComputeSalary() {
double s;
cout<<"输入普通员工工资:";
cin>>s;
if(s>=0) salary=s;
cout<<"普通员工基本工资是:"<<salary<<" 总工资是:"<<salary<<endl;
}
};
class HighEmployee :public Employee
{
protected:
double hra;
public:
HighEmployee(double h=0.0):hra(h){}
virtual void ComputeSalary() {
double s=0.0,h=0.0;
cout<<"输入高级员工工资:";
cin>>s;
cout<<"输入住房津贴:";
cin>>h;
if(s>=0) salary=s;
if(h>=0) hra=h;
cout<<"高级员工基本工资是:"<<salary<<" 住房津贴是:"<<hra<<" 总工资是:"<<salary+hra<<endl;
}
};
class Manager :public HighEmployee
{
bool IsManager(){
cout<<"是否是经理?[y/n]";
char c;
cin>>c;
if(c=='y'||c=='Y') return true;
return false;
}
public:
virtual void ComputeSalary(){
if(!IsManager()){
HighEmployee::ComputeSalary();
return;
}
double s=0.0,h=0.0;
cout<<"输入经理工资:";
cin>>s;
cout<<"输入住房津贴:";
cin>>h;
if(s>=0) salary=s;
if(h>=0) hra=h;
cout<<"输入经理奖金:";
cin>>s;
if(s>=0) salary+=s;
cout<<"经理基本工资是:"<<salary<<" 住房津贴是:"<<hra<<" 总工资是:"<<salary+hra<<endl;
}
};
int main(int argc, char *argv[])
{
Employee e1;
HighEmployee e2;
Manager e3;
e1.ComputeSalary();
e2.ComputeSalary();
e3.ComputeSalary();
return 0;
}
热心网友
时间:2023-07-11 20:24
建一个类Employee,然后在主函数中用一个数组实例化N个员工类,每个员工对应一个实例.类中的函数ComputeSalary(),首先要求输入员工类型,比如普通员工或经理什么的,所以你手上要有事先规划好的员工分类表,用1,2,3,...x给员工分好类型,在ComputeSalary()中,对输入的员工类型用swith:然后case1,2,3,...x对每种类型做不同的计算!比如:case1的话,普通员工,直接输出基本工资1000就可以了!
如果不想用输入来接收员工类型,可以给函数ComputeSalary()放一个参数,ComputeSalary(int n),在调用的时候把员工的类型传给这个形参就行了!然后swith n....case 1,2,3,..x.就本例,只有3种类型,如果类型太多,ComputeSalary函数估计会比较大!
只用一个函数ComputeSalary()也可以,好像!!
用一个循环一直调用ComputeSalary().每次要求输入员工类型,做不同的计算并输出,然后再次调用来计算第二个员工!!
基本思路好像就这样子!!