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
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()+"名员工");
}
}