JAVA课后习题(三)——雇员的工作职责(一)

大家好!
我是小黄,很高兴又跟大家见面啦 !
今天更新的是:


创建时间:2020年10月23日
软件版本: eclipse 2020-06 (4.16.0)


1. 题目:

1、 本实验要求:以雇员的日常工作为背景,体验“继承”与“属性复用技术”的运用场景。

  • 1-1. 业务说明:
    1-1.1. 本实验以公司雇员的日常工作模式为业务背景。
    1-1.2. 公司每个雇员每天都需要进行日常的常规工作。
    1-1.3. 人事人员既是公司雇员,同时也具有特定的工作职责。
    1-1.4. 人事除了日常的常规工作外,还具有为员工发放薪水的工作职责。
    1-2. 创建工程并配置环境:
    1-2.1. 限制1. 创建实验工程,命名为:SE_JAVA_EXP_E032;
    1-2.2. 限制2. 创建包,命名为:cn.campsg.java.experiment;
    1-2.3. 限制3. 创建包,命名为:cn.campsg.java.experiment.entity。
    1-3. 创建雇员实体类及其相关属性:
    1-3.1. 限制1. 在cn.campsg.java.experiment.entity 包中创建雇员类:Employe。
    1-3.2. 为Employe类创建如下属性:
    1)雇员姓名:字符类型;
    2)雇员职级:整数类型;
    3)雇员薪水:整数类型。
    1-3.3. 为Employe类的属性创建getter/setter方法。
    1-3.4. 为Employe类创建0参构造函数。
    1-3.5. 为Employe类创建3参构造函数。
    1)在3参构造器中,对雇员类的三个属性进行初始化。
    1-3.6. 为Employe类创建日常的常规工作方法:
    1)限制1. 方法名为:work。
    2)限制2. work方法可设定为0参,无返回公共函数。
    3)work方法的作用是,模拟雇员的常规工作。
    4)work方法需在控制台输出信息:雇员名称 +“ 做好了本职工作! ”
    1-4. 创建人事实体类及其相关属性:
    1-4.1. 限制1.在cn.campsg.java.experiment.entity包中创建人事类:Hrstaff;
    1)Hrstaff类需继承Employe类,以此获取雇员类的所有属性和特征。
    1-4.2. 为Hrstaff创建0参构造函数。
    1-4.3. 为Hrstaff创建1参构造函数:
    1)参数为:人事姓名(字符串类型)。
    2)Hrstaff利用继承技术特有的属性共用特性,实现初始化。
    3)Hrstaff调用父类Employe的3参构造函数,参数如下:
    Employe类的雇员姓名属性 = Hrstaff类的雇员姓名属性。
    Employe类的雇员职级属性 = 5(人事雇员等级默认为5)。
    Employe类的雇员薪水属性 = 5000(人事雇员薪水默认为5000)。
    1-5. 实现人事为雇员发放薪水的操作:
    1-5.1. 为Hrstaff类创建发放薪水方法:
    1)限制1. 方法名为:paySalary;
    2)限制2. paySalary方法带有1个Employe类型参数,用于表述为哪位员工发放工资。
    3)限制3. paySalary方法可设定为无返回公共函数。
    4)paySalary根据Employe的雇员等级实现薪水发放,发放规则如下:
    职级在[1-5]之间,雇员薪水 = 雇员薪水 + 500;
    职级在[6-9]之间,雇员薪水 = 雇员薪水 + 800;
    职级在[10-15]之间,雇员薪水 = 雇员薪水 + 1000;
    超出职级范围,提示:“不存在对应的职级,无法发放额外浮动薪水”
    1-6. 显示雇员工作内容和薪水:
    1-6.1. 限制1. 在cn.campsg.java.experiment包中创建主类:MainClass;
    1-6.2. 为MainClass创建入口主方法:main;
    1-6.3. 在main方法中,创建3个不同雇员对象和1个人事对象。
    1-6.4. 在main方法中,显示所有雇员和人事的常规工作情况(调用work)。
    1-6.5. 在main方法中,实现人事对所有雇员(包括自己)发放薪水的操作。
    1-6.6. 工资发放后,在main方法中输出雇员的发薪信息(包括人事):
    1)输出信息格式为:员工姓名 +“ 的薪水: ”+ 员工类的雇员薪水

  • 2、实现思路

    2-1. 创建工程并配置环境。
    2-2. 创建雇员实体类及其相关属性:
    2-2.1. 在cn.campsg.java.experiment.entity 包中创建雇员类:Employe;
    2-2.2. 为Employe定义如下私有属性成员变量
    1)雇员姓名:String name;
    2)雇员职级:int level;
    3)雇员薪水:int salary。
    2-2.3. 为Employe类的属性创建对应的getter/setter方法。
    2-2.4. 为Employ类创建默认构造器。
    2-2.5. 为Employe类创建3参构造器,创建规则如下:
    1)构造器的参数分别对应Employe的三个属性变量;
    2)在3参构造器内完成对Employe类三个属性的赋值。
    2-2.6. 为Employe创建常规工作方法:work,其形式如下:
    在这里插入图片描述
    1)在方法体内向控制台输出信息,格式:雇员姓名 +“ 做好了本职工作! ”;
    2-3. 创建人事实体类及相关属性:
    2-3.1. 在cn.campsg.java.experiment.entity包中创建人事类:Hrstaff。
    1)人事类Hrstaff继承自雇员类Employe。
    2-3.2. 为人事类Hrstaff创建默认构造器。
    2-3.3. 为人事类Hrstaff创建1参构造器,参数为人事的姓名:
    1)在1参构造器内调用Employe的3参构造器,实现人事的属性初始化。
    2)Hrstaff类属性的初始化可按如下规则设置:
    Employe的name属性 = Hrstaff的name属性;
    Employe的level属性 = 5;
    Employe的salary属性 = 5000。
    2-4. 实现人事为雇员发放薪水的操作
    2-4.1. 为Hrstaff类创建特有的发薪方法paySalary,其形式如下:
    在这里插入图片描述
    2-4.2. 实现薪水发放的业务逻辑:
    1)在方法内,首先获取通过参数传入的雇员对象职级:
    int level = em.getLevel();
    2)按实验要求,根据雇员的职级在原有薪水基础上增加额外的补贴金额。
    3)超出职级时提示信息为:“不存在对应的职级,无法发放额外浮动薪水”。
    2-5. 显示雇员工作内容和薪水:
    2-5.1. 在包cn.campsg.java.experiment中创建业务主类:MainClass;
    2-5.2. 在MainClass中定义主函数main。
    2-5.3. 在main方法中创建3个不同的雇员对象和1个人事对象。
    2-5.4. 调用4个对象的work函数,输出所有雇员(包括人事)的工作内容。
    2-5.5. 模拟实现人事为雇员(包括自己)发放薪水的操作:
    1)调用Hrstaff对象的paySalary方法,并分别传入三个雇员对象。
    2)调用Hrstaff对象的paySalary方法,并传入人事对象自己。
    3)依次向控制台输出所有雇员的发薪信息,信息格式如下:
    雇员对象.getName() +“的薪水:”+ 雇员对象.getSalary()。

  • 3、验证与测试

    3-1. 在工程中定位主类MainClass。
    3-2. 右键点击MainClass类,依次选择:Run As->Java Application。
    3-3. 运行程序,查看输出结果是否符合预期。

  • 4、完成效果预览:
    在这里插入图片描述

2. 代码:

  • eclipse工程目录 :
    在这里插入图片描述
  • 包名 :cn.campsg.java.experiment
  • 类名:MainClass
package cn.campsg.java.experiment;

import cn.campsg.java.experiment.entity.Employe;
import cn.campsg.java.experiment.entity.Hrstaff;

public class MainClass {
    
    

	public static void main(String[] args) {
    
    
		Employe employe1=new Employe("南帝",1,5000);
		Employe employe2=new Employe("北丐",7,6000);
		Employe employe3=new Employe("中神",11,7000);
		Hrstaff hr=new Hrstaff("HR");
		employe1.work();
		employe2.work();
		employe3.work();
		hr.work();
		System.out.println(hr.getName()+"开始发放工资:");
		hr.paySalary(employe1);
		hr.paySalary(employe2);
		hr.paySalary(employe3);
		hr.paySalary(hr);
	}

}

  • 包名 :cn.campsg.java.experiment.entity
  • 类名:Employe
package cn.campsg.java.experiment.entity;

public class Employe {
    
    
	private String name;
	private int level;
	private int salary;

	public Employe() {
    
    
		super();
	}

	public Employe(String name, int level, int salary) {
    
    
		super();
		this.name = name;
		this.level = level;
		this.salary = salary;
	}

	public String getName() {
    
    
		return name;
	}

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

	public int getLevel() {
    
    
		return level;
	}

	public void setLevel(int level) {
    
    
		this.level = level;
	}

	public int getSalary() {
    
    
		return salary;
	}

	public void setSalary(int salary) {
    
    
		this.salary = salary;
	}

	public void work() {
    
    
		System.out.println(name + " 做好了本职工作! ");
	}
}

  • 包名 :cn.campsg.java.experiment.entity
  • 类名:Hrstaff
package cn.campsg.java.experiment.entity;

public class Hrstaff extends Employe {
    
    
	public Hrstaff() {
    
    
		super();
	}

	public Hrstaff(String name) {
    
    
		super(name, 5, 5000);
	}

	public Hrstaff(String name, int level, int salary) {
    
    
		super(name, level, salary);
	}

	public void paySalary(Employe em) {
    
    
		if (em.getLevel() > 0 && em.getLevel() < 6)
			em.setSalary(em.getSalary() + 500);
		else if (em.getLevel() < 10)
			em.setSalary(em.getSalary() + 800);
		else if (em.getLevel() < 16)
			em.setSalary(em.getSalary() + 1000);
		else
			System.out.println("不存在对应的职级,无法发放额外浮动薪水");
		System.out.println("员工" + em.getName() + "的薪水:" + em.getSalary());
	}
}


各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。

每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
在这里插入图片描述

把握现在 ,展望未来 ,加油 !


由于水平有限 ,写的难免会有些不足之处 ,恳请各位大佬不吝赐教 !

猜你喜欢

转载自blog.csdn.net/weixin_44519789/article/details/109250592