目录

1.1任务描述

1.2任务目标

1.3任务实现思路

1.4任务实现源码

1.5任务运行结果图示


1.1任务描述

某公司的员工分为5类,每类员工都有相应的封装类,这5个类的信息如下。

(1)Employee:这是所有员工的父类。

①属性:员工的姓名、生日月份。

②方法:getSalary(int month)根据参数月份确定工资。如果该月员工过生日,则公司会额外发放100元。

(2)SalariedEmployee:Employee的子类,拿固定工资的员工。

属性:月薪。

(3)HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160h的部分按照1.5倍工资发放。

属性:每小时的工资,每月工作的小时数。

(4)SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。

属性:月销售额,提成率。

(5)BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。

属性:底薪。

本题要求根据上述雇员分类,编写一个程序,实现以下功能:

(1)创建一个Employee 数组,分别创建若干不同的Employee对象,并打印某个月的工资。

(2)每个类都完全封装,不允许非私有化属性。

1.2任务目标

(1)学会分析“员工属性及工资分析”程序任务实现的逻辑思路。

(2)能够独立完成“员工属性及工资分析”程序的源代码编写、编译及运行。

(3)理解和掌握面向对象的设计过程。

(4)掌握类的结构和定义过程。

(5)掌握构造方法及其重载。

(6)掌握对象的创建和使用。

1.3任务实现思路

(1)通过任务描述可知,需要定义一个员工类Employee实现员工每月可获得的薪酬。

(2)先定义父类Employee,再定义其子类SalariedEmployee,HourlyEmployee,SalesEmployee(其下又定义子类BasePlusSalesEmployee),实现5类员工相应的封装类。

(3)创建一个Employee 数组,分别创建若干不同的Employee对象,并打印某个月的工资。

1.4任务实现源码

abstract class Employee{private String name;                 //定义姓名name并私有化属性private int month;                   //定义生日月份month并私有化属性public Employee(){}                    //无参构造器public Employee(String name,int month){  //有参构造方法this.name = name;    //给属性name初始化赋值this.month = month;  //给属性month初始化赋值}//获取属性name的方法public String getName(){return name;   //返回name属性}//获取属性month的方法public int getMonth(){return month;  //返回month属性}//给属性name赋初始值public void setName(String name){this.name = name;  //本类中的属性name}//给属性month赋初始值public void setMonth(int month){this.month = month; //本类中的属性month}//创建一个方法getSalary()用来计算工资,参数month是月份,如果当月是员工生日,奖      励100元public double getSalary(int month){double salary = 0;      //定义工资变量//判断当前月份是否是员工的生日月份,如果是奖励100元if(this.month == month){salary = salary + 100;}return salary;    //返回工资salary}
}class SalariedEmployee extends Employee{private double monthSalary;          //封装monthSalary属性public SalariedEmployee(){}          //无参构造方法//有参构造方法   参数  姓名 生日月份  月薪public SalariedEmployee(String name,int month,double monthSalary){super(name,month);                  //调用父类有参构造方法this.monthSalary = monthSalary;   //为属性monthSalary初始化赋值}//获取monthSalary的值public double getMonthSalary(){return monthSalary;}//给monthSalary赋值public void setMonthSalary(double monthSalary){this.monthSalary = monthSalary;}//覆盖父类中的方法public double getSalary(int month){double salary = monthSalary+super.getSalary(month);   //定义工资变量return salary;}
}class HourlyEmployee extends Employee{private double hourlySalary; //定义属性hourlySalary每小时的工资private int hours; //定义属性hours每月工作的小时数public HourlyEmployee(){}    //无参构造方法//有参构造方法  参数 姓名 生日月份  每小时的工资 每月工作的小时数public HourlyEmployee(String name,int month,double hourlySalary,int hours){super(name,month);                     //调用父类有参构造方法this.hourlySalary = hourlySalary ; //为属性hourlySalary初始化赋值this.hours = hours;             //为属性hours 初始化赋值}public double getHourlySalary(){    //获取hourlySalary的值return hourlySalary;}public int getHours(){             //获取hours的值return hours;}//定义set方法设置hourlySalary  hours的值public void setHourlySalary(double hourlySalary){this.hourlySalary =hourlySalary;}public void setHourly(int hours){this.hours = hours;}//覆盖父类方法public double getSalary(int month){if(hours < 0){      //如果工作小时数小于0  输出数据错误System.out.println("数据错误");return 0;}//小于160个小时的 按照每个月的工作小时数乘以每小时的工资else if(hours <= 160)return hourlySalary*hours+super.getSalary(month);//超出160个小时的小时数 按照1.5倍计算else return hourlySalary*160+hourlySalary*1.5*(hours-160)+super.getSalary(month);}
}class SalesEmployee extends Employee{private double sales ; //定义销售额salesprivate double rate; //定义提成率ratepublic SalesEmployee(){}public SalesEmployee(String name,int month,double sales,double rate){super(name,month);this.sales = sales;this.rate = rate;}public double getSales(){return sales;}public double getRate(){return rate;}public void setSales(double sales){this.sales = sales;}public void setRate(double rate){this.rate = rate;}public double getSalary(int month){return this.getSales()*(1+this.getRate())+super.getSalary(month);}
}class BasePlusSalesEmployee extends SalesEmployee{private double baseSalary; //定义基础工资baseSalary//无参构造方法public BasePlusSalesEmployee(){}//有参构造方法public BasePlusSalesEmployee(String name,int month,double sales,double rate,double baseSalary){super(name,month,sales,rate);this.baseSalary = baseSalary;}//get/set方法对私有属性的调用和设置public double gatBaseSalary(){return baseSalary;}public void setBaseSalary(){this.baseSalary = baseSalary;}public double getSalary(int month){return baseSalary+super.getSalary(month);}
}//定义一个测试类
public class Test{public static void main(String[] args){//声明一个Employee类型的数组,并创建不同子类型的对象Employee[] employee = {new SalariedEmployee("张三",1,6000),new HourlyEmployee("李四",2,50,180),new SalesEmployee("王五",3,6500,0.15),new BasePlusSalesEmployee("赵六",4,5000,0.15,2000)};//打印每个员工的工资for(int i = 0; i < employee.length ;i++)System.out.println(Math.round(employee[i].getSalary(10)));}
}

1.5任务运行结果图示

任务1:公司员工薪酬相关推荐

  1. 从各大科技公司员工薪酬看职务划分和等级

    以下是2010年1月从新闻上看到的各大科技公司员工薪酬,稍微做了下处理,按照薪酬从高到低作了排序. 目的不是为了对比薪酬,也完全没有对比的可能性. 目的是为了参考各大科技公司对职务种类的划分方式以及对 ...

  2. 深圳南山区人均员工薪酬前10的优秀公司

    关注.星标公众号,直达精彩内容 来源:数人类整理:技术让梦想更伟大 | 李肖遥 一个城市,一个片区,能否吸引人,能否留住人,关键在于是否有提供具有吸引力薪酬待遇的优秀公司.随着A股上市公司最新的年报在 ...

  3. 深圳福田区人均员工薪酬前10的优秀公司,你了解多少家?

    关注.星标公众号,直达精彩内容 来源:极致Linux 一个城市,一个片区,能否吸引人,能否留住人,关键在于是否有提供具有吸引力薪酬待遇的优秀公司.其中A股上市公司是优秀公司群体中的重要代表,随着A股上 ...

  4. 135.001 智能合约设计-——单员工薪酬系统

    @(135- Block Chain| 区块链) Introduction 参考阅读:老董-以太坊智能合约全栈开发 课程导读 1. 最终产品Demo 员工系统--人员管理+工资发放 大公司如何发工资? ...

  5. 台积电全球员工薪酬中位数约46万,CEO约899万;苹果上调日本的 iPhone 售价 ;Vim 9.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  6. 从数据分析,看公司员工流失率分析报告

    一.概述: 1.员工离职和员工流失率的概念: 员工离职:员工被辞退及辞职.不续签的情况 员工流失率(离职率):公司离职的员工人数/(入职人数+最初原有人数)*100% 例如:月离职率=本月离职人数/( ...

  7. 台积电全球员工薪酬中位数约 46 万,CEO 约 8991 万!

    据台媒"中央社"消息,台积电公布 2021 年度永续报告书,披露去年全球员工总体薪酬的中位数约新台币 206 万元(约合人民币 46.35 万元),总裁魏哲家的薪酬约为中位数的 1 ...

  8. 员工奖金需要交税吗_公司员工发奖金用交税吗?交税金额怎么计算

    展开全部 公司员工发奖金,公司需要代扣代缴员工的个人所得税 一62616964757a686964616fe59b9ee7ad9431333337613233.月度或季度奖金: 月度或季度奖金,在发放 ...

  9. 基于asp.net的商业银行员工薪酬管理系统

    本文基于ASP.NET技术与SQL SERVER 数据库技术开发一个薪酬管理系统.用来实现公司企业的人力资源以及员工的工作绩效的管理,包括员工档案信息管理,员工业绩评定管理,员工工资信息管理,基本资料 ...

最新文章

  1. Gartner:基础设施和运营领域10大技术趋势
  2. 阿里云容器服务多项重磅发布:高效智能、安全无界的新一代平台
  3. Linux - 操作系统查找文件的过程以及硬链接与软链接的区别
  4. 背包——变向背包(hdu2546,1114,1203,2189)
  5. TensorFlow windows安装
  6. SQLite的sqlite3_column_blob函数
  7. iPhone 各屏幕尺寸及解析
  8. Linux学习第一周作业。
  9. asio ssl 笔记
  10. Unity烘焙时UV Overlap的解决办法
  11. 我每次去德国出差必带的东西
  12. 全能在线APP一款开源的多功能在线学习考试智慧软件系统
  13. python闭包,自由变量
  14. dell服务器安装系统不识别键鼠,戴尔电脑八代CPU装win7鼠标键盘不能用|win10改win7鼠标键盘用不了...
  15. 百度广告投放决定排名的因素!在百度推广广告有效果吗?
  16. uni-app监听窗口尺寸变化事件和隐藏键盘
  17. Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了
  18. 中文分词算法—— 基于词典的方法
  19. 杰里之 定时器捕获(timer_cap.c) 使用注意事项【篇】
  20. 【javaWeb】第50天—— WEB实战项目二

热门文章

  1. (81)TCL脚本命令【lindex】
  2. unity开发炉石传说系列玩家手中卡牌出入及移动排列代码
  3. 变形金刚2的官方全长720P,1080P预告片下载(2分16秒)
  4. Spring的IOC和AOP思想
  5. Oracle数据库备份迁移
  6. Git删除本地分支以及重新拉取远程分支到本地
  7. 《想骗我没门》读书笔记,第一招 开门见山
  8. 华为Matex提前上市为哪般?
  9. Mac 下载-安装QT
  10. PHP-为图片再添加水印图片