Java项目案例之---计算公司员工的工资(面向对象复习)

计算公司员工的工资(面向对象的复习)

某公司的雇员分为以下若干类:

Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。

SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪

HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数

SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率

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

写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额。

注意:要求把每个类都做成完全封装,不允许非私有化属性。

import java.util.Calendar;

public class Employee {
    private String name;//员工姓名
    private int month;//生日月份
    public Employee(){

    }
    public Employee(String name,int month){
        this.setName(name);
        this.setMonth(month);
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    /**
     * 判断员工是否当月过生日
     * @param month
     * @return 是的话返回100,不是返回0
     */
    public static double getSalary(int month){
        //获取当前月份,属于工具类中的内容
        Calendar ca=Calendar.getInstance();
        int m=ca.get(Calendar.MONTH)+1;
        if(month==m){
            return 100;
        }else{
            return 0;
        }
    }
}
//固定月薪

public class SalariedEmployee extends Employee {

    private double monthsalary;//月薪

    public SalariedEmployee(){

    }

    public SalariedEmployee(String name,int month){

        super(name,month);

    }

    public double getMonthsalary() {

        return monthsalary;

    }

    public void setMonthsalary(double monthsalary) {

        this.monthsalary = monthsalary;

    }

    /**

     * 计算固定月薪员工的工资

     * @param monthsalary

     * @param month

     * @return 固定月薪员工的工资

     */

    public double getmonth(double monthsalary,int month){

        double n=monthsalary+Employee.getSalary( month);

        return n;

    }
}
//时薪*小时   超过160小时,超过部分1.5工资

public class HourlyEmployee extends Employee{

    private double hourlyWage;//时薪

    private int hour;//总时长

    public HourlyEmployee(){

    }

    public HourlyEmployee(String name,int month){

        super(name,month);

    }

    public double getHourlyWage() {

        return hourlyWage;

    }

    public void setHourlyWage(double hourlyWage) {

        this.hourlyWage = hourlyWage;

    }

    public int getHour() {

        return hour;

    }

    public void setHour(int hour) {

        this.hour = hour;

    }

    /**

     * 计算时薪员工的工资

     * @param hour

     * @param hourlyWage

     * @param month

     * @return  时薪员工的工资

     */

    public double gethour(int hour,double hourlyWage,int month){

        double n;

        if(hour>160){

           n=160*hourlyWage+(hour-160)*hourlyWage*1.5+Employee.getSalary(month);

        }else{

            n=hour*hourlyWage+Employee.getSalary(month);

        }

        return n;

    }

}
//销售额*提成率

public class SalesEmployee extends Employee{

    private int salesVolume;//销售额

    private double royalty;//提成率

    public SalesEmployee(){

    }

    public SalesEmployee(String name,int month){

        super(name,month);

    }

    public int getSalesVolume() {

        return salesVolume;

    }

    public void setSalesVolume(int salesVolume) {

        this.salesVolume = salesVolume;

    }

    public double getRoyalty() {

        return royalty;

    }

    public void setRoyalty(double royalty) {

        this.royalty = royalty;

    }

    /**

     * 计算提成

     * @param salesVolume

     * @param royalty

     * @return 提成

     */

    public double getroyalty(int salesVolume,double royalty){

       return salesVolume*royalty;

    }

}
//销售额*提成+底薪

public class BasePlusSalesEmployee extends SalesEmployee{

   private double baseSalary;//底薪

    public BasePlusSalesEmployee(){

    }

    public BasePlusSalesEmployee(String name,int month){

        super(name,month);

    }

    public double getBaseSalary() {

        return baseSalary;

    }

    public void setBaseSalary(double baseSalary) {

        this.baseSalary = baseSalary;

    }

    /**

     * 计算销售人员的工资

     * @param salesVolume

     * @param royalty

     * @param baseSalary

     * @param month

     * @return 销售人员月薪

     */

    public double getroyalty(int salesVolume,double royalty,double baseSalary,int month){

        return salesVolume*royalty+baseSalary+Employee.getSalary(month);

    }

}
public class EmployeeTest {
    public static void main(String[] args){
        SalariedEmployee a=new SalariedEmployee("月薪人",7);
        HourlyEmployee b=new HourlyEmployee("时薪人",10);
        BasePlusSalesEmployee c=new BasePlusSalesEmployee("提成人",1);
        System.out.println( a.getName()+":\n月薪"+a.getmonth(10000,a.getMonth()));
        System.out.println(b.getName()+":\n月薪"+b.gethour(170,20,b.getMonth()));
        System.out.println(c.getName()+":\n月薪"+c.getroyalty(100,50,1000,c.getMonth()));

    }
}

运行结果:

月薪人:

月薪10100.0

时薪人:

月薪3500.0

提成人:

月薪6000.0

原文地址:https://www.cnblogs.com/dyddzhp/p/11180953.html

时间: 2024-08-26 02:47:13

Java项目案例之---计算公司员工的工资(面向对象复习)的相关文章

java项目案例 java项目源码 java后台框架源码

获取[下载地址]   QQ: 313596790   [免费支持更新]支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体A 代码生成器(开发利器);      增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可

java学习项目案例分享视频资源地址

java学习项目案例分享视频资源地址 http://v.youku.com/v_show/id_XMjYxNjc4MTgwOA==.html?spm=a2hzp.8244740.userfeed.5!8~5~5~5!3~5~A你要的学习资料到了- web前端交流学习群21

Java项目之员工收录系统

在Java SE中,对IO流与集合的操作在应用中比较重要.接下来,我以一个小型项目的形式,演示IO流.集合等知识点在实践中的运用. 该项目名称为"员工收录系统",在Eclipse的控制台上进行操作.操作界面如下: 该项目的文件结构如下: Step 1: 入口类SystemMain的代码为: package empsystem; import java.util.Scanner; /** * 主界面 * 一个Scanner录入对象 * Employ类 * 文件路径 * 查重SearchI

JAVA实用案例之文件导出(JasperReport踩坑实录)

写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小Demo,JAVA实用案例之文件导入导出(POI方式). 虽然简单,但是企业应用的原理基本上也就是这样,只不过是封装的更好些,不像我之前写的那样每个Cell都需要定义,其实poi的方式也是我目前最推崇的方式之一了.主要原因是jxl不支持xlsx,Jaspe

实验12-SPSS-聚类分析-公司员工绩效评估

 SPSS-聚类分析介绍        聚类分析,就是按照个体的特征将他们分类,目的在于让同一个类别内的个体之间具有较高的相似度,而不同类别之间具有较大的差异性. 我们可以对变量进行聚类,但是更常见的还是对个体进行聚类,也就是样本聚类. 例如对用户.渠道.商品.员工等方面的聚类,聚类分析主要应用在市场细分.用户细分等领域. 常用指标:距离和相似度. 聚类分析时,将"距离"较小的 点或"相似系数"较大的点归为同一类. 1.聚类分析总结起来共有四步: (1)确定需要参与

案例分享:使用员工电脑监控,有什么好处?

下面分享一个真实案例: 北京**科技有限公司梁总想要通过企业员工电脑监控来对员工上网进行管理,通过软件的监控与管理,减少上班与工作无关的上网行为,从而提高员工有效工作效率. 员工工作效率低,上网无节制 梁总发现,最近公司业绩颇有下滑的趋势,于是想要了解员工的详细工作进展,当他在公司时,每一个员工看起来都在忙碌着工作,似乎没什么不妥,但是原因到底是什么呢?难道这只是表面的工作,平时我不在公司,是这样的状态吗?员工会在我离开时,大部分时间在做与工作无关的事,上网聊天?购物? 后来,梁总经朋友介绍,说

数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例 实验所用数据表 子查询,解决一步不能求解 查询工资比scott高的员工信息: 子查询知识体系搭建: 解释3,查询部门是sales的员工信息: 方法1:子查询 [方法2]:多表: 优化考虑: 解释4[select],只能放单行子查询 解释4[from] 考题:显示员工姓名,薪水 解释

【Java】使用switch 计算一个日期是当年的第几天

计算一个日期是当年的第几天 这是去年做的一个Java题目,老师当时说这段代码里的switch用的很好. 现在工作一年了,明显感觉当时还很稚嫩,那个时候考虑问题很简单, 现在遇到问题会想更多的方面,说到这里,真的要谢谢带我的经理, 这段时间真的学到很多东西,每天都是在解决问题,每天都能学到新东西, 短短几个月时间进步了好多. 1 import java.util.Scanner; 2 3 /** 4 * 计算一个日期是当年的第几天 5 */ 6 public class CountDays { 7

使用Maven构建Java项目

一.Maven是什么? Maven 是一个项目管理和构建自动化工具.Maven基于POM(Project object model),能够管理项目的构建.报表.文档等信息. 我们这里主要讲的Maven的项目构建功能.有了Maven,我们可以方便的管理Java项目的生命周期和依赖.通过定义一个POM文件,我们就可以自动的完成编译.测试.打包甚至发布等过程. 二.为什么要用Maven? 做过Java项目的童鞋都知道,一个项目中Java代码经常会依赖其他的jar包中的class,或者依赖其它的项目,手