部门成员统计的时候,怎样全部人员信息输入进去自动,统计对应部门的人数
dep1.addStaff(sta1); dep1.addStaff(sta2); dep1.addStaff(sta3); dep1.addStaff(sta4); dep1.addStaff(sta5); dep1.addStaff(sta6); System.out.println(dep1.getDepartmentName()+"共有"+dep1.getStaffNum()+"名员工");
结果是 人事部共有6名员工 希望的到的效果是 人事部共有3名员工
部门类
public class Department {
//成员属性:部门编号、部门名称、部门员工信息
private String departmentNo;
private String departmentName;
private Staff[] departmentStaff;
private int staffNum;
//无参构造
public Department(){
}
//带参构造,对部门名称、部门编号进行赋值
public Department(String departmentName,String departmentNo) {
this.setDepartmentNo(departmentNo);
this.setDepartmentName(departmentName);
}
public void setDepartmentNo(String departmentNo) {
this.departmentNo=departmentNo;
}
public String getDepartmentNo() {
return departmentNo;
}
public void setDepartmentName(String departmentName) {
this.departmentName=departmentName;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentStaff(Staff[] departmentStaff) {
this.departmentStaff=departmentStaff;
}
/**
* 获取部门员工信息 如果保存员工信息的数组未被初始化,则先初始化长度50
* @return 保存员工信息的数字
*/
public Staff[] getDepartmentStaff() {
if(departmentStaff==null) {
this.departmentStaff=new Staff[50];
}
return departmentStaff;
}
public void setStaffNum(int staffNum) {
this.staffNum=staffNum;
}
public int getStaffNum() {
return staffNum;
}
/**
* 部门信息介绍
* @return 部门名称、部门编号
*/
public String depInfo() {
String str="部门信息如下:\n部门名称:"+this.departmentName+"\n部门编号:"+this.departmentNo;
return str;
}
public void addStaff(Staff sta) {
int i;
for(i=0;i<this.getDepartmentStaff().length;i++) {
if(this.getDepartmentStaff()[i]==null) {
sta.setStaffDepartment(this);
this.getDepartmentStaff()[i]=sta;
this.staffNum=i+1;
return;
}
}
}
}职务类
public class Job {
//成员属性:职务编号、职务名称
private String jobNo;
private String jobName;
//无参构造
public Job() {
}
//带参构造,为全部属性赋值
public Job(String jobName,String jobNo) {
this.setJobName(jobName);
this.setJobNo(jobNo);
}
public void setJobNo(String jobNo) {
this.jobNo=jobNo;
}
public String getJobNo() {
return jobNo;
}
public void setJobName(String jobName) {
this.jobName=jobName;
}
public String getJobName() {
return jobName;
}
/**
* 职务信息介绍
* @return 职务名称、职务编号
*/
public String jobInfo() {
String str="职务信息如下:\n职务名称:"+this.getJobName()+"\n职务编号:"+this.getJobNo();
return str;
}
}员工类
public class Staff {
// 成员属性:员工姓名、工号、年龄、性别
private String staffName;
private String staffNo;
private int staffAge;
private String staffSex;
private Department staffDepartment;
private Job staffJob;
// 无参构造
public Staff() {
}
// 带出构造,对全部属性进行赋值
public Staff(String staffName, String staffNo, String staffSex, int staffAge) {
this.setStaffName(staffName);
this.setStaffNo(staffNo);
this.setStaffAge(staffAge);
this.setStaffSex(staffSex);
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
public String getStaffName() {
return staffName;
}
public void setStaffNo(String staffNo) {
this.staffNo = staffNo;
}
public String getStaffNo() {
return staffNo;
}
/**
* 设定方法限定年龄只能是18--65之间,反之则设置默认为18岁
*
* @param staffAge 传入年龄
*/
public void setStaffAge(int staffAge) {
if (staffAge < 18 || staffAge > 65) {
this.staffAge = 18;
} else {
this.staffAge = staffAge;
}
}
public int getStaffAge() {
return staffAge;
}
/**
* 设定方法限定性别只能是“男”或者“女”,反之则设置默认为"男"
*
* @param staffSex 传入性别
*/
public void setStaffSex(String staffSex) {
if (staffSex != "女") {
this.staffSex = "男";
} else {
this.staffSex = staffSex;
}
}
public String getStaffSex() {
return staffSex;
}
public void setStaffDepartment(Department staffDepartment) {
this.staffDepartment = staffDepartment;
}
/**
* 获取部门对象,如果没有实例化,先实例化后再返回
*
* @return 部门对象信息
*/
public Department getStaffDepartment() {
if (staffDepartment == null) {
this.staffDepartment = new Department();
}
return staffDepartment;
}
public void setStaffJob(Job staffJob) {
this.staffJob = staffJob;
}
/**
* 获取职务对象,如果没有实例化,先实例化后再返回
*
* @return 职务对象
*/
public Job getStaffJob() {
if (staffJob == null) {
this.staffJob = new Job();
}
return staffJob;
}
/**
* 员工信息介绍
* @param dep 传入部门信息
* @param job 传入职务信息
* @return 姓名、工号、性别、年龄、职务
*/
public String staffInfo(Department dep,Job job ) {
String str = "姓名:" + this.getStaffName() + "\n工号:" + this.getStaffNo() + "\n性别:" +this.getStaffSex()
+"\n年龄:"+ this.getStaffAge()+ "\n职务:"+dep.getDepartmentName()+job.getJobName();
return str;
}
}主程序
public class CompanyTest {
public static void main(String[] args) {
//实例化部门类
Department dep1=new Department("人事部","D001");
Department dep2=new Department("市场部","D002");
//实例化职务类
Job jb1=new Job("经理","J01");
Job jb2=new Job("职员","J02");
Job jb3=new Job("助理","J03");
//实例化职员类
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.staffInfo(dep1, jb1));
System.out.println("==================");
System.out.println(sta2.staffInfo(dep1, jb3));
System.out.println("==================");
System.out.println(sta3.staffInfo(dep1, jb2));
System.out.println("==================");
System.out.println(sta4.staffInfo(dep2, jb2));
System.out.println("==================");
System.out.println(sta5.staffInfo(dep2, jb1));
System.out.println("==================");
System.out.println(sta6.staffInfo(dep2, jb2));
System.out.println("==================");
//部门人员统计
dep1.addStaff(sta1);
dep1.addStaff(sta2);
dep1.addStaff(sta3);
dep1.addStaff(sta4);
dep1.addStaff(sta5);
dep1.addStaff(sta6);
dep2.addStaff(sta1);
dep2.addStaff(sta2);
dep2.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()+"名员工");
}
}0
收起
正在回答
1回答
建议将员工的构造方法改为:Staff sta1=new Staff("张铭","S001","男",29,dep1,jb1);
部门类中,在进行员工人数统计时,增加一个判断,将统计方法改为:
public void addStaff(Staff sta) {
int i;
for (i = 0; i < this.getDepartmentStaff().length; i++) {
if (this.getDepartmentStaff()[i] == null) {
if (sta.getStaffDepartment().getDepartmentName().equals(this.getDepartmentName())) {
//sta.setStaffDepartment(this);
this.getDepartmentStaff()[i] = sta;
this.staffNum = i + 1;
}
return;
}
}
}建议同学根据这个思路修改一下,作业中的问题是由于员工并没有设置部门,所以在进行双向关联时,会给员工设置多次部门,从而导致的统计不是想要的结果。
祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星