部门成员统计的时候,怎样全部人员信息输入进去自动,统计对应部门的人数

部门成员统计的时候,怎样全部人员信息输入进去自动,统计对应部门的人数

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

}


正在回答

登陆购买课程后可参与讨论,去登陆

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;
        }
    }
}

建议同学根据这个思路修改一下,作业中的问题是由于员工并没有设置部门,所以在进行双向关联时,会给员工设置多次部门,从而导致的统计不是想要的结果。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师