【Java學習筆記】Java封裝 3-8程式設計練習
Android零基礎入門——慕課就業班
Java面向物件——Java封裝 2-8程式設計練習
3-8 作業
題目要求:
某公司要開發內部的 “辦公資訊化管理系統”,請使用面向物件的思想描述以下員工資訊。
程式執行參考效果圖如下:
任務描述
一、語言和環境
-
實現語言
Java語言
-
環境要求及開發工具
JDK、Eclipse
二、程式整體要求
-
劃分功能模組,根據題目要求設定不同的類,在類中實現相應功能的管理。
-
類的標識要清楚易懂,程式碼結構要層次分明,程式碼編輯思路要清晰、整潔。
-
要求Java程式碼書寫、命名符合規範,屬性所屬資料型別要準確合理,在程式碼中新增必要的註釋
-
程式執行效果與提供的頁面效果圖、結構保持一致,資訊間分隔符“=”號數量不做統一要求,文字大小、顏色也不做統一要求
-
將作業專案形成壓縮檔案並提交
三、思路分析:
由場景和執行效果,可以分析出專案中可以抽取如下類(要求編碼時注意面向物件思想及封裝特性的應用):
-
部門類:
型別描述:能夠描述部門編號、部門名稱、獲取所有該部門員工資訊
要求:設定方法統計該部門員工個數
-
職務類:
型別描述:能夠描述職務編號、職務名稱
-
員工類:
型別描述:能夠描述員工姓名、工號、年齡、性別、所屬部門、職務資訊
要求:
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()+"名員工");
}
}