某公司要开发内部的 “办公信息化管理系统”,请使用面向对象的思想描述以下员工信息。
程序运行参考效果图如下:
任务描述
一、语言和环境
- 实现语言
Java语言
- 环境要求及开发工具
JDK、Eclipse
二、程序整体要求
- 划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。
- 类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
- 要求Java代码书写、命名符合规范,属性所属数据类型要准确合理,在代码中添加必要的注释
- 程序运行效果与提供的页面效果图、结构保持一致,信息间分隔符“=”号数量不做统一要求,文字大小、颜色也不做统一要求
- 将作业项目形成压缩文件并提交
三、思路分析:
由场景和运行效果,可以分析出项目中可以抽取如下类(要求编码时注意面向对象思想及封装特性的应用):
- 部门类:
类型描述:能够描述部门编号、部门名称、获取所有该部门员工信息
要求:设定方法统计该部门员工个数
- 职务类:
类型描述:能够描述职务编号、职务名称
- 员工类:
类型描述:能够描述员工姓名、工号、年龄、性别、所属部门、职务信息
要求:
1、 设定方法限定年龄只能是18--65之间,反之则设置默认为18岁
2、 设定方法限定性别只能是“男”或者“女”,反之则设置默认为"男"
3、 设定方法,实现员工自我介绍信息,将员工信息作为字符串返回
- 测试类:
类型描述:测试程序,并参照效果图输出结果
注意:可以在属性上添加适当的信息验证,提高信息的安全性
package me.feihong.office;
public class Staff {
// 成员属性:员工姓名、工号、年龄、性别
private String staffName;
private String staffNo;
private int staffAge;
private String staffSex;
// 无参构造方法
public Staff() {
}
// 多参构造方法,实现对全部属性的赋值
public Staff(String staffName, String staffNo, int staffAge, String staffSex) {
this.setStaffName(staffName);
this.setStaffNo(staffNo);
this.setStaffAge(staffAge);
this.setStaffSex(staffSex);
}
public String getStaffName() {
return staffName;
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
public String getStaffNo() {
return staffNo;
}
public void setStaffNo(String staffNo) {
this.staffNo = staffNo;
}
public int getStaffAge() {
return staffAge;
}
/**
* 限定年龄只能是18-65之间,反之则设置默认为18岁
*
* @param staffAge
*/
public void setStaffAge(int staffAge) {
if (staffAge < 18 | staffAge > 65)
this.staffAge = 18;
else
this.staffAge = staffAge;
}
public String getStaffSex() {
return staffSex;
}
/**
* 对员工性别进行限制,“男”或者“女”,否则默认为“男”
*
* @param staffSex
*/
public void setStaffSex(String staffSex) {
if (this.staffSex=="男" || this.staffSex=="女")
this.staffSex = staffSex;
else
this.staffSex = "男";
}
/**
* 员工自我介绍方法
* @return 自我介绍的信息,包括姓名、工号、性别、年龄
*/
public String introduction() {
String str = "员工信息如下:\n姓名:" + this.getStaffName() + "\n工号:" + this.getStaffNo() + "\n性别:" + this.getStaffSex()
+ "\n年龄:" + this.getStaffAge();
return str;
}
/**
* 员工自我介绍方法
* @param myDepartment
* @param myJob
* @return 自我介绍信息,包括姓名、工号、性别、年龄、所在部门、职务
*/
public String introduction(Department myDepartment,Job myJob) {
String str = "员工信息如下:\n姓名:" + this.getStaffName() + "\n工号:" + this.getStaffNo() + "\n性别:" + this.getStaffSex()
+ "\n年龄:" + this.getStaffAge()+"\n职务:"+myDepartment.getDepartmentName()+myJob.getJobName();
return str;
}
}
package me.feihong.office;
public class Job {
// 职务:职务编号、职务名称
private String jobNo;
private String jobName;
// 无参构造方法
public Job() {
}
// 带参构造方法,赋值给全部属性;
public Job(String jobNo, String jobName) {
this.setJobName(jobName);
this.setJobNo(jobNo);
}
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public String getJobNo() {
return jobNo;
}
public void setJobNo(String jobNo) {
this.jobNo = jobNo;
}
}
package me.feihong.office;
public class Department {
// 部门编号、部门名称、员工数组、统计变量
private String departmentNo;
private String departmentName;
private Staff[] myStaffs;
private int staffNum;
// 无参构造方法
public Department() {
}
// 带参构造方法,赋值给部门编号、部门名称
public Department(String departmentNo, String departName) {
this.setDepartmentName(departName);
this.setDepartmentNo(departmentNo);
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getDepartmentNo() {
return departmentNo;
}
public void setDepartmentNo(String departmentNo) {
this.departmentNo = departmentNo;
}
public Staff[] getMyStaffs() {
if(this.myStaffs==null)
this.myStaffs=new Staff[200];
return myStaffs;
}
public void setMyStaffs(Staff[] myStaffs) {
this.myStaffs = myStaffs;
}
public int getStaffNum() {
return staffNum;
}
public void setStaffNum(int staffNum) {
this.staffNum = staffNum;
}
/**
* 部门员工个数统计方法
* @param sta
*/
public void addStaff(Staff sta) {
for(int i=0;i<this.getMyStaffs().length;i++) {
if(this.getMyStaffs()[i]==null) {
this.getMyStaffs()[i]=sta;
this.staffNum=i+1;
return;
}
}
}
}
package me.feihong.test;
import me.feihong.office.*;
public class OfficeTest {
public static void main(String[] args) {
Department dep1=new Department("D001","人事部");
Department dep2=new Department("D002","市场部");
Job job1=new Job("J001","经理");
Job job2=new Job("J002","助理");
Job job3=new Job("J003","职员");
Staff sta1=new Staff("张铭","S001",29,"男");
Staff sta2=new Staff("李艾爱","S002",21,"女");
Staff sta3=new Staff("孙超","S004",29,"男");
Staff sta4=new Staff("张美美","S005",26,"女");
Staff sta5=new Staff("蓝迪","S006",37,"男");
Staff sta6=new Staff("米莉","S007",24,"女");
System.out.println(sta1.introduction(dep1,job1));
System.out.println("==============================");
System.out.println(sta2.introduction(dep1,job2));
System.out.println("==============================");
System.out.println(sta3.introduction(dep1,job3));
System.out.println("==============================");
System.out.println(sta4.introduction(dep2,job3));
System.out.println("==============================");
System.out.println(sta5.introduction(dep2,job1));
System.out.println("==============================");
System.out.println(sta6.introduction(dep2,job3));
System.out.println("==============================");
dep1.addStaff(sta1);
dep1.addStaff(sta2);
dep1.addStaff(sta3);
dep2.addStaff(sta4);
dep2.addStaff(sta5);
dep2.addStaff(sta6);
System.out.println(dep1.getDepartmentName()+"总共有"+dep1.getStaffNum()+"名员工");
System.out.println(dep2.getDepartmentName()+"总共有"+dep2.getStaffNum()+"名员工");
}
}