1. 程式人生 > >【Java學習筆記】Java封裝 3-8程式設計練習

【Java學習筆記】Java封裝 3-8程式設計練習

Android零基礎入門——慕課就業班

Java面向物件——Java封裝 2-8程式設計練習

3-8 作業

題目要求:

      某公司要開發內部的 “辦公資訊化管理系統”,請使用面向物件的思想描述以下員工資訊。

//climg.mukewang.com/5837d74d0001ce1805000281.jpg

      程式執行參考效果圖如下:

//climg.mukewang.com/5837d8c600015ff203020656.jpg

任務描述

一、語言和環境

  • 實現語言

       Java語言

  • 環境要求及開發工具

       JDK、Eclipse

二、程式整體要求

  1. 劃分功能模組,根據題目要求設定不同的類,在類中實現相應功能的管理。

  2. 類的標識要清楚易懂,程式碼結構要層次分明,程式碼編輯思路要清晰、整潔。

  3. 要求Java程式碼書寫、命名符合規範,屬性所屬資料型別要準確合理,在程式碼中新增必要的註釋

  4. 程式執行效果與提供的頁面效果圖、結構保持一致,資訊間分隔符“=”號數量不做統一要求,文字大小、顏色也不做統一要求

  5.  將作業專案形成壓縮檔案並提交

三、思路分析:

      由場景和執行效果,可以分析出專案中可以抽取如下類(要求編碼時注意面向物件思想及封裝特性的應用):

  • 部門類:

       型別描述:能夠描述部門編號、部門名稱、獲取所有該部門員工資訊

       要求:設定方法統計該部門員工個數

  • 職務類:

       型別描述:能夠描述職務編號、職務名稱

  • 員工類:

       型別描述:能夠描述員工姓名、工號、年齡、性別、所屬部門、職務資訊

       要求:

        1、 設定方法限定年齡只能是18--65之間,反之則設定預設為18歲

        2、 設定方法限定性別只能是“男”或者“女”,反之則設定預設為"男"

        3、 設定方法,實現員工自我介紹資訊,將員工資訊作為字串返回

  • 測試類:

       型別描述:測試程式,並參照效果圖輸出結果

注意:可以在屬性上新增適當的資訊驗證,提高資訊的安全性

我的程式碼如下:

Department.java:

package com.imooc.model;
/**
 * 部門類
 * @author 劉小花Crystal
 * 2018年11月17日
 */
public class Department {
	//成員屬性:部門編號、部門名稱、該部門員工資訊、該部門員工個數
	private String departmentNum;
	private String departmentName;
	private Staff[] myStaff;
	private int staffNum;
	
	//無參構造方法:
	public Department() {
		super();
	}
	
	//帶參構造,實現對部門編號、部門名稱的賦值:
	public Department(String departmentNum, String departmentName) {
		super();
		this.setDepartmentNum(departmentNum);
		this.setDepartmentName(departmentName);
	}

	public String getDepartmentNum() {
		return departmentNum;
	}

	public void setDepartmentNum(String departmentNum) {
		this.departmentNum = departmentNum;
	}

	public String getDepartmentName() {
		return departmentName;
	}

	public void setDepartmentName(String departmentName) {
		this.departmentName = departmentName;
	}

	/**
	 * 獲取部門的員工資訊 如果儲存員工資訊的陣列未被初始化,則,先初始化長度200
	 * @return 儲存員工資訊的陣列
	 */
	public Staff[] getMyStaff() {
		if (this.myStaff==null) {
			this.myStaff = new Staff[200];
		}
		return myStaff;
	}

	public void setMyStaff(Staff[] myStaff) {
		this.myStaff = myStaff;
	}

	public int getStaffNum() {
		return staffNum;
	}

	public void setStaffNum(int staffNum) {
		this.staffNum = staffNum;
	}
	
	/**
	 * 1、將員工儲存到陣列中
	 * 2、將員工個數儲存到staffNum
	 * */
	public void addStaff(Staff stf) {
		//1、將員工儲存到陣列中
		int i=0;
		for (i=0; i<this.getMyStaff().length; i++) {
			if (this.getMyStaff()[i]==null) {
				stf.setMyDepartment(this);
				this.getMyStaff()[i] = stf;
				break;
			}
		}
		//2、將員工個數儲存到staffNum
		this.staffNum = i+1;
	}
	
}

Position.java:

package com.imooc.model;
/**
 * 職務類
 * @author 劉小花Crystal
 * 2018年11月17日
 */
public class Position {
	//成員屬性:職務編號、職務名稱
	private String positionNum;
	private String positionName;
	
	//無參構造方法
	public Position() {
		
	}
	
	//帶參構造,實現對全部屬性的賦值
	public Position(String positionNum, String positionName) {
		this.setPositionName(positionName);
		this.setPositionNum(positionNum);
	}

	public String getPositionNum() {
		return positionNum;
	}

	public void setPositionNum(String positionNum) {
		this.positionNum = positionNum;
	}

	public String getPositionName() {
		return positionName;
	}

	public void setPositionName(String positionName) {
		this.positionName = positionName;
	}
	
}

Staff.java:

package com.imooc.model;
/**
 * 員工類
 * @author 劉小花Crystal 
 * 2018年11月17日
 */
public class Staff {
	// 成員屬性:員工姓名、工號、年齡、性別、所屬部門、職務資訊
	private String staffName;
	private String staffId;
	private int staffAge;
	private String staffSex;
	private Department myDepartment;
	private Position myPosition;

	// 無參構造方法:
	public Staff() {
		super();
	}

	// 帶參構造,實現對員工姓名、編號、年齡、性別的賦值
	public Staff(String staffName, String staffId, String staffSex, int staffAge) {
		super();
		this.setStaffName(staffName);
		this.setStaffId(staffId);
		this.setStaffAge(staffAge);
		this.setStaffSex(staffSex);
	}
	
	// 帶參構造,實現對員工全部屬性的賦值
	public Staff(String staffName, String staffId, String staffSex, int staffAge, Department myDepartment,
			Position myPosition) {
		super();
		this.setStaffName(staffName);
		this.setStaffId(staffId);
		this.setStaffAge(staffAge);
		this.setStaffSex(staffSex);
		this.setMyDepartment(myDepartment);
		this.setMyPosition(myPosition);
	}

	public String getStaffName() {
		return staffName;
	}

	public void setStaffName(String staffName) {
		this.staffName = staffName;
	}

	public String getStaffId() {
		return staffId;
	}

	public void setStaffId(String staffId) {
		this.staffId = staffId;
	}

	public int getStaffAge() {
		return staffAge;
	}

	public void setStaffAge(int staffAge) {
		// 限定年齡只能是18--65之間,反之則設定預設為18歲
		if (staffAge < 18 || staffAge > 65) {
			this.staffAge = 18;
		} else {
			this.staffAge = staffAge;
		}
	}

	public String getStaffSex() {
		return staffSex;
	}

	public void setStaffSex(String staffSex) {
		// 限定性別只能是“男”或者“女”,反之則設定預設為"男"
		if (staffSex.equals("男") || staffSex.equals("女")) {
			this.staffSex = staffSex;
		} else {
			this.staffSex = "男";
		}
	}

	/**
	 * 獲取部門物件,如果沒有例項化,先例項化後再返回
	 * @return 部門物件資訊
	 */
	public Department getMyDepartment() {
		if (this.myDepartment==null) {
			this.myDepartment = new Department();
		}
		return myDepartment;
	}

	public void setMyDepartment(Department myDepartment) {
		this.myDepartment = myDepartment;
	}

	/**
	 * 獲取職務物件,如果沒有例項化,先例項化後再返回
	 * @return 職務物件資訊
	 */
	public Position getMyPosition() {
		if (this.myPosition==null) {
			this.myPosition = new Position();
		}
		return myPosition;
	}

	public void setMyPosition(Position myPosition) {
		this.myPosition = myPosition;
	}

	/**
	 * 員工自我介紹資訊的方法
	 * @return 員工資訊
	 */
	public String introduction() {
		String str = "姓名:" + this.getStaffName() + "\n工號:" + this.getStaffId() + "\n性別:" + this.getStaffSex() + "\n年齡:"
				+ this.getStaffAge() + "\n職務:"+this.myDepartment.getDepartmentName()+this.myPosition.getPositionName();
		return str;
	}
}

CompanyTest:

package com.imooc.test;
import com.imooc.model.*;
/**
 * @author 劉小花Crystal
 * 2018年11月17日
 */
public class CompanyTest {
	public static void main(String[] args) {
		Department dp1 = new Department("A1","人事部");
		Department dp2 = new Department("B2","市場部");
		Position pt1 = new Position("B1","職員");
		Position pt2 = new Position("B2","助理");
		Position pt3 = new Position("B3","經理");
		
		Staff st1 = new Staff("張銘","S001","男",29,dp1,pt2);
		Staff st2 = new Staff("李艾愛","S002","女",21,dp1,pt2);
		Staff st3 = new Staff("孫超","S004","男",29,dp1,pt1);
		Staff st4 = new Staff("張美美","S005","女",26,dp2,pt1);
		Staff st5 = new Staff("藍迪","S006","男",37,dp2,pt3);
		Staff st6 = new Staff("米莉","S007","女",24,dp2,pt1);
		
		dp1.addStaff(st1);
		dp1.addStaff(st2);
		dp1.addStaff(st3);
		dp2.addStaff(st4);
		dp2.addStaff(st5);
		dp2.addStaff(st6);
		
		System.out.println(st1.introduction());
		System.out.println("============================");
		System.out.println(st2.introduction());
		System.out.println("============================");
		System.out.println(st3.introduction());
		System.out.println("============================");
		System.out.println(st4.introduction());
		System.out.println("============================");
		System.out.println(st5.introduction());
		System.out.println("============================");
		System.out.println(st6.introduction());
		System.out.println("============================");
		System.out.println(dp1.getDepartmentName()+"總共有"+dp1.getStaffNum()+"名員工");
		System.out.println(dp2.getDepartmentName()+"總共有"+dp2.getStaffNum()+"名員工");
	}
}