某公司有各类员工,定义一个员工类(Employee),该类具有员工的姓名(Name)和基本薪金(Salary)等属性;并有一个虚方法(CalSalary)用于计算并输出员工的总薪金。对不同的员工,薪

某公司有各类员工,定义一个员工类(Employee),该类具有员工的姓名(Name)和基本薪金(Salary)等属性;并有一个虚方法(CalSalary)用于计算并输出员工的总薪金。

对不同的员工,薪金的计算方法不同。

(1)定义一个继承自员工类的销售员类(SalesPerson),销售员除了员工类的基本薪金外,还有一个销售提成属性(SaleCommission)。现在在派生类中重新编写基类的虚方法(CalSalary),计算并输出销售员类的总薪金。

(2)定义一个计件工人类(PiecePerson),其继承自员工类,计件工人除了员工类的基本薪金外,还有每件工资(PerPay)和生产的产品件数(Number)属性,在派生类中重新编写基类的虚方法(CalSalary)。

 public class Employee
    {
        private string name;  //姓名
        private double salary;  //基本薪金
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public double Salary
        {
            get { return salary; }
            set { salary = value; }
        }
        public virtual void CalSalary()   //计算输出员工的总薪金的虚方法
        {
            Console.WriteLine("{0}的薪金为{1}", Name, Salary);
        }
    }
    /// <summary>
    /// 销售员类
    /// </summary>
    public class SalesPerson : Employee
    {
        private double salecommission;//新增提成薪金变量
        public double SaleCommission  //新增提成薪金属性
        {
            get { return salecommission; }
            set { salecommission = value; }
        }
        public override void CalSalary()
        //重写从基类Employee中继承的计算总工资方法 CalSalary
        {
            double totalSalary = Salary + SaleCommission;
            Console.WriteLine("{0}的薪金为{1}", Name, totalSalary);
        }
    }
    /// <summary>
    /// 计件工人类
    /// </summary>
    public class PiecePerson : Employee
    {
        private double perpay;  //新增每件工资变量
        private int number;     //新增产品件数变量
        public double PerPay   //新增每件工资属性
        {
            get { return perpay; }
            set { perpay = value; }
        }
        public int Number    //新增产品件数属性
        {
            get { return number; }
            set { number = value; }
        }
        public override void CalSalary() //重写从基类Employee中继承的计算总工资方法 CalSalary
        {
            double totalSalary = Salary + PerPay * Number;
            Console.WriteLine("{0}的薪金为{1}", Name, totalSalary);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            SalesPerson sp = new SalesPerson();
            Console.Write("请输入销售员工的姓名:");
            sp.Name = Console.ReadLine();
            Console.Write("请输入该销售员工的基本工资");
            sp.Salary = Convert.ToDouble(Console.ReadLine());
            Console.Write("请输入该销售员工的新增提成薪金");
            sp.SaleCommission = Convert.ToDouble(Console.ReadLine());
            sp.CalSalary();
            Console.WriteLine(); Console.WriteLine();

            PiecePerson pp = new PiecePerson();
            Console.Write("请输入计件员工的姓名:");
            pp.Name = Console.ReadLine();
            Console.Write("请输入该计件员工的基本工资");
            pp.Salary = Convert.ToDouble(Console.ReadLine());
            Console.Write("请输入该计件员工的生产产品的每件工资");
            pp.PerPay = Convert.ToDouble(Console.ReadLine());
            Console.Write("请输入该计件员工的生产的产品件数");
            pp.Number = Convert.ToInt32(Console.ReadLine());
            pp.CalSalary();
            Console.ReadLine();
        }
    }

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值