JAVA課後習題(三)——僱員的工作職責(一)

2020-10-25 13:00:24

大家好!
我是小黃,很高興又跟大家見面啦 !
今天更新的是:


建立時間: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());
	}
}


各位路過的朋友,如果覺得可以學到些什麼的話,點個贊 再走吧,歡迎各位路過的大佬評論,指正錯誤,也歡迎有問題的小夥伴評論留言,私信。

每個小夥伴的關注都是本人更新部落格的動力!!!
請微信搜尋【 在下小黃 】文章更新將在第一時間閱讀 !
在這裡插入圖片描述

把握現在 ,展望未來 ,加油 !


由於水平有限 ,寫的難免會有些不足之處 ,懇請各位大佬不吝賜教 !