2019独角兽企业重金招聘Python工程师标准>>>

/*********************************************************************************
*
* 功能描述:    对不同的类的员工,计算相应的工资
*
* 作    者:    夜风
*
* 修改日期:    2012年-08月-10日
* 备    注:无某公司雇员(Employee)包括经理(Manager),技术人员(Technician)和销售员(Salesman)。
1)Employee类的属性包括姓名、职工号、工资级别(影响基本工资),月薪(基本工资加业绩工资)。
* 操作包括月薪计算函数(Pay()),该函数要求输入请假天数,扣去应扣工资后,得出实发基本工资。
2)Technician类派生的属性有每小时附加酬金和当月工作时数,及工作完成进度系数,业绩工资为三者之积。
* Technician类也包括Pay()函数,工资总额为基本工资加业绩工资。
3)Salesman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。Salesman类也包括Pay()函数,
* 工资总额为基本工资加业绩工资。
4)Manager类派生属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。
编程实现工资管理。对不同的类的员工,计算相应的工资。
************************************************************************************/
namespace WorkClass
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static void Main(string[] args)
{
GetSalary3("郭靖","1002",20,200,0.5);
GetSalary1("李欣", "1003",2000,2.1 );
GetSalary2("张扬", "1004",6800,0.2 );
System.Console.ReadKey();
}
#region 技术员的工资
public static void GetSalary3(string EmployeeName, string EmployeeId,double HourAddFee, double HoursOfWork, double WorkProgress)
{
Technician te = new Technician();
te.EmployeeName = EmployeeName;
te.EmployeeId = EmployeeId;
te.HourAddFee = HourAddFee;
te.HoursOfWork = HoursOfWork;
te.WorkProgress = WorkProgress;
te.Level = Employee.WageGrender.Technician;
Console.WriteLine("(技术员){0}的职员号是{1}工资是{2}",EmployeeName,EmployeeId, te.Pay(3));
}
#endregion
#region 经理的工资
public static void GetSalary1(string EmployeeName, string EmployeeId, double StaticSalary, double Performances) 
{
Manager ma = new Manager();
ma.EmployeeName = EmployeeName;
ma.EmployeeId = EmployeeId;
ma.StaticSalary = StaticSalary;
ma.Performances = Performances;
ma.Level = Employee.WageGrender.Manager;
Console.WriteLine("(经理){0}的职员号是{1}工资是{2}", EmployeeName, EmployeeId, ma.Pay(2));
}
#endregion 
#region 销售员的工资
public static void GetSalary2(string EmployeeName, string EmployeeId, double MonthOfSales, double MoneyOfPercentage) 
{
Manager ma = new Manager();
ma.EmployeeName = EmployeeName;
ma.EmployeeId = EmployeeId;
ma.StaticSalary = MonthOfSales;
ma.Performances = MoneyOfPercentage;
ma.Level = Employee.WageGrender.Salesman;
Console.WriteLine("(销售员){0}的职员号是{1}工资是{2}", EmployeeName, EmployeeId, ma.Pay(0));
}
#endregion
#region 雇员
abstract  class Employee
{
//职工姓名
public string EmployeeName;
//职员编号
public string EmployeeId;
//工资级别
public WageGrender Level;
//月薪
public double MonthSalary;
public double BaseSalary;
public enum WageGrender
{
Technician=2,
Salesman=3,
Manager=1,
}
/// <summary>
/// 月薪计算函数
/// </summary>
/// <param name="LeaveDays"></param>
/// <returns></returns>
public virtual double Pay(int DaysOff)
{
//根据不同的级别确定不同的月基本工资
switch (Level)
{
case WageGrender.Manager:
BaseSalary = 8000;
break;
case WageGrender.Technician:
BaseSalary = 6000;
break;
case WageGrender.Salesman:
BaseSalary = 4000;
break;
}
//月薪的计算函数
MonthSalary = BaseSalary + GetExtraSalary();
//最后实际工资的计算方法
double FinalSalary = MonthSalary - (BaseSalary/30)*DaysOff;
//将计算的最后工资保留到小数点后两位
return FinalSalary = double.Parse(FinalSalary.ToString("0.00 ")); 
}
public abstract double GetExtraSalary();
}
#endregion
#region 技术人员
class Technician : Employee
{
public double HourAddFee;
public double HoursOfWork;
public double WorkProgress;
//重写父类的Pay方法
public override double Pay(int DaysOff)
{
return base.Pay(DaysOff);
}
public override double GetExtraSalary()
{
double extraSalary = HourAddFee * HoursOfWork * WorkProgress;
return extraSalary;
}
}
#endregion
#region 销售员类
class Salesman : Employee
{
public  double MonthOfSales;
public  double MoneyOfPercentage;
//重写父类的Pay方法
public override double Pay(int DaysOff)
{
return base.Pay(DaysOff);
}
//重写业绩工资的方法
public override double GetExtraSalary()
{
double extraSalary = MonthOfSales * MoneyOfPercentage;
return extraSalary;
}
}
#endregion
#region 经理类
class Manager : Employee
{
public double StaticSalary;
public double Performances;
//重写父类的Pay方法
public override double Pay(int DaysOff)
{
return base.Pay(DaysOff);                                               
}
public override double GetExtraSalary()
{
double extraSalary = StaticSalary * Performances;
return extraSalary;
}
}
#endregion
}
}

转载于:https://my.oschina.net/u/656507/blog/72116

C#对不同的类的员工,计算相应的工资相关推荐

  1. java 员工类算工资_用java设计一个员工类,可以计算工资个人所得税

    用java设计一个员工类,可以计算工资个人所得税 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个员工类.该员工具有下列私有属性:编号,姓名,基本工资,奖金  提 ...

  2. 【创建包:employee,完成如下功能】1. 创建一个员工类(Employee),其中包括:1) 4个私有属性:员工姓名(name)、员工年龄(age)、员工职位(position)、工资

    [创建包:employee,完成如下功能] 1. 创建一个员工类(Employee),其中包括: 1) 4个私有属性:员工姓名(name).员工年龄(age).员工职位(position).工资(sa ...

  3. Eval.cs的改进版 动态编译类,可以计算表达式,也可以调用系统中的类

    Eval.cs的改进版 动态编译类,可以计算表达式,也可以调用系统中的类 /* 动态编译类,可以计算表达式,也可以调用系统中的类 调用方式:     return new XXXXXXX.Eval() ...

  4. 【SQL开发实战技巧】系列(十四):计算消费后的余额计算银行流水累计和计算各部门工资排名前三位的员工

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  5. 运动类计算公式----卡路里计算

    运动类计算公式----卡路里计算 一.计算公式 体重(kg)* 距离(km)* 运动系数(k) 二.运动系数 健走:k=0.8214 跑步:k=1.036 自行车:k=0.6142 轮滑.溜冰:k=0 ...

  6. 设计一个矩形类,完成计算矩形面积和显示矩形属性的功能。

    / /* [基本题]设计一个矩形类,完成计算矩形面积和显示矩形属性的功能. */ #include<iostream> using namespace std; class Retangl ...

  7. mysql三表联合查询(员工表,部门表,工资表)

    一.问题总结:(最下面有建表语句,复制可以直接练习使用(mysql)) 查出至少有一个员工的部门.显示部门编号.部门名称.部门位置.部门人数. 列出薪金比关羽高的所有员工. 列出所有员工的姓名及其直接 ...

  8. MySQL期末考试题目 题目1:查询employee数据表中的第5—8行的数据;题目2:查询每个部门的员工人数以及平均工资;题目3:查询‘孙威’的基本信息,包括员工编号、所在部门名称、岗位等级以及基本

    上篇博客记录了我在mysql考试时遇到的报错,错过了考试时间[我不知道考试时间只有20分钟] 关于第二题,第三题,哪位大佬可以有点再简单的操作方法ma,或者其他方法,想学习学习,欢迎各位大佬指点指点! ...

  9. mysql 分销提成计算_销售人员工资计算表-2017销售人员工资提成计算表免费版-东坡下载...

    相比每人每个月都惦记着工资吧,小编已经为你整理好了销售人员工资提成计算表.算算自己的工资到底怎么来的吧! 销售人员工资提成计算表预览 快来计算销售人员的工资提成吧! 如何做好销售 分析顾客的消费心理 ...

最新文章

  1. 深度学习(八)RBM受限波尔兹曼机学习-未完待续
  2. Gentoo 安装日记 09 (安装stage3:下载内核)
  3. ROS中catkin_make编译输出的可执行文件在哪?
  4. 基于netty的微服务网关_基于Rx-netty和Karyon2的云就绪微服务
  5. python ssh实现_SSH协议的Python实现paramiko
  6. Python爬虫的基本原理
  7. Qbxt 模拟题 day3(am) T3 选数字 (select)(贪心)
  8. Java 蓝桥杯 判断闰年
  9. java输出csv文件在excel中显示乱码
  10. Simple Lambda Sample
  11. 递推公式与递归退出的条件
  12. 【干货】前端工程与性能优化
  13. iOS关于破解ipa包
  14. 在Linux下使用“360随身WiFi 2” ubuntu14.04 64位系统适用
  15. nodejs+vue结合七牛云实现图片上传
  16. 总结rocketmq的搭建
  17. axios的一封装和二次封装
  18. 被AI潮抛弃的企业?对话微软CTO韦青,如何应对“变革”焦虑
  19. Nodejs 服务端MVC架构
  20. 蓝桥杯python组——猜生日

热门文章

  1. vr汽修仿真实训教学整体方案软件专业定制
  2. 12期 1月期刊自荐
  3. C++入门第一课:HelloWorld
  4. PTA-吃鱼还是吃肉
  5. Excel打开xlsx、csv后空白解决方法
  6. 土方量计算的准确作法
  7. 实训心得_高俊伟 java
  8. UVALIVE 3307 Adventurous Driving
  9. 域名哪家便宜?怎么买便宜域名?
  10. Mybatis从入门到精通——MGB代码生成器(12)