【Java学习笔记】Java封裝 3-8编程练习

Android零基础入门——慕课就业班

Java面向对象——Java封装 2-8编程练习

3-8 作业

题目要求:

      某公司要开发内部的 “办公信息化管理系统”,请使用面向对象的思想描述以下员工信息。

//climg.mukewang.com/5837d74d0001ce1805000281.jpg

      程序运行参考效果图如下:

//climg.mukewang.com/5837d8c600015ff203020656.jpg

任务描述

一、语言和环境

  • 实现语言

       Java语言

  • 环境要求及开发工具

       JDK、Eclipse

 

二、程序整体要求

  1. 划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。

  2. 类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。

  3. 要求Java代码书写、命名符合规范,属性所属数据类型要准确合理,在代码中添加必要的注释

  4. 程序运行效果与提供的页面效果图、结构保持一致,信息间分隔符“=”号数量不做统一要求,文字大小、颜色也不做统一要求

  5.  将作业项目形成压缩文件并提交

 

三、思路分析:

      由场景和运行效果,可以分析出项目中可以抽取如下类(要求编码时注意面向对象思想及封装特性的应用):

  • 部门类:

       类型描述:能够描述部门编号、部门名称、获取所有该部门员工信息

       要求:设定方法统计该部门员工个数

 

  • 职务类:

       类型描述:能够描述职务编号、职务名称

 

  • 员工类:

       类型描述:能够描述员工姓名、工号、年龄、性别、所属部门、职务信息

       要求:

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

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值