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

5 篇文章 0 订阅
1 篇文章 1 订阅

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

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

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

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

```c
namespace 实验3_2
{


    class Employee
    {
        public string name;
        public 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("请输入Name:");
            Name = Convert.ToString(Console.ReadLine());
            Console.WriteLine("基本工资:");
            Salary = Convert.ToDouble(Console.ReadLine());
        }
    }

    class SalesPerson : Employee
    { 
        public double saleCommission;
        public double SaleCommission
        {
            get { return saleCommission; }
            set { saleCommission = value; }
        }
        public override void CalSalary()
        {
            Console.Write("销售员类");
            base.CalSalary();
            Console.WriteLine("销售提成工资:");
            SaleCommission = Convert.ToDouble(Console.ReadLine());       
            Console.WriteLine("总薪资{0}:", SaleCommission+ Salary);
        }
    }

    class PiecePerson : Employee
    {
        public double perPay ;
        public double number;
        public double PerPay
        {
            get { return perPay; }
            set { perPay= value; }
        }
        public double Number
        {
            get { return  number; }
            set { number = value; }
        }
        public override void CalSalary()
        {
            Console.Write("计件工人类");
            base.CalSalary();
            Console.WriteLine("每件工资:");
            PerPay = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("生产的产品:");
            Number = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("总薪资{0}:", PerPay * Number + Salary);
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            SalesPerson a = new SalesPerson();
            a.CalSalary();
            PiecePerson b = new PiecePerson();
            b.CalSalary();
        }
    }
}

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
公司雇员(Employee)包括经理(Manager),技术人员(Technician)和销售员(Salesman)。开发部经理(DeveloperManger),既是经理也是技术人员。销售部经理(SalesManager),既是经理也是销售员。 以Employee为虚基类派生出Manager,Technician和Salesman;再进一步派生出Developermanager和SalesmanagerEmployee属性包括姓名、职工号、工资级别,月薪(实发基本工资加业绩工资)。操作包括月薪计算函数(pay()),该函数要求输入请假天数,扣去应扣工资后,得出实发基本工资。 Technician派生的属性有每小时附加酬金和当月工作时数,及研究完成进度系数。业绩工资为三者之积。也包括同名的pay()函数,工资额为基本工资加业绩工资。 Salesman派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay()函数,工资额为基本工资加业绩工资。 Manager派生属性有固定奖金额和业绩系数,业绩工资为两者之积。工资额也为基本工资加业绩工资。 而DeveloperManager,pay()函数是将作为经理和作为技术人员业绩工资之和的一半作为业绩工资。 SalesManager,pay()函数则是经理的固定奖金额的一半,加上部门销售额与提成比例之积,这是业绩工资。 编程实现工资管理。特别注意pay()的定义和调用方法:先用同名覆盖,再用运行时多态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值