2020-7-17 Java综合案例练习

2020-7-17 Java综合案例练习

一、选择

  1. 执行下面代码后,哪几个结论是正确的 (B)
    在这里插入图片描述
    A. f[0]
    B. f[0] = 0.0
    C. 编译失败
    D. 在运行时抛出异常

  2. 执行下面代码后,哪几个结论是正确的(多选)(AC)
    String[ ] s = new String[10];
    A. s[9]为null
    B. s[10]的内容为空字符串
    C. 没有s[0]
    D. s.length=10

二、编程题

  1. 题目要求:
    某公司要开发内部的 “办公信息化管理系统”,请使用面向对象的思想描述以下员工信息。
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    程序运行参考效果图如下:
    在这里插入图片描述
    任务描述
    一、语言和环境

实现语言
Java语言
环境要求及开发工具
JDK、Eclipse
二、程序整体要求

划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。
类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
要求Java代码书写、命名符合规范,属性所属数据类型要准确合理,在代码中添加必要的注释
程序运行效果与提供的页面效果图、结构保持一致,信息间分隔符“=”号数量不做统一要求,文字大小、颜色也不做统一要求
作业完成后发表在自己的博客上
三、思路分析:
由场景和运行效果,可以分析出项目中可以抽取如下类(要求编码时注意面向对象思想及封装特性的应用):

部门类:
类型描述:能够描述部门编号、部门名称、员工数组、统计部门中的员工个数
要求:设定方法统计该部门员工个数
提示:部门类的属性有四个,分别是部门编号,部门名称,员工数组 和 统计变量 ,具体是市场部还是人事部,是通过部门类的对象来表示的,如果是市场部的对象,那么添加并统计的就是市场部的人数,同样如果是人事部的对象,添加并统计的就是人事部的人数

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

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

设定方法限定年龄只能是18–65之间,反之则设置默认为18岁
设定方法限定性别只能是“男”或者“女”,反之则设置默认为"男"
设定方法,实现员工自我介绍信息,将员工信息作为字符串返回
测试类:
类型描述:测试程序,并参照效果图输出结果

PS:注意:可以在属性上添加适当的信息验证,提高信息的安全性

部门类:

package com.dodoke.project;

public class Department {
	//设置部门类的私有属性
	private String depName;//部门名称
	private String depNum;//部门编号
	private int staffNums;//员工个数
	private Staff[] staffArray;//员工数组
	
	//get\set方法
	//部门名称
	public String getDepName() {
		return depName;
	}
	public void setDepName(String depName) {
		this.depName = depName;
	}
	//部门编号
	public String getDepNum() {
		return depNum;
	}
	public void setDepNum(String depNum) {
		this.depNum = depNum;
	}
	
	//员工个数
	public int getStaffNums() {
		return staffNums;
	}
	public void setStaffNums(int staffNums) {
		//如果部门人数小于0,部符合实际,为其赋值为0
		if(this.staffNums < 0){
			this.staffNums = 0;
			return;
		}
		this.staffNums = staffNums;
	}
	
	//员工数组
	public Staff[] getStaffArray() {
		if(this.staffArray == null){
			this.staffArray = new Staff[100];
		}
		return staffArray;
	}
	public void setStaffArray(Staff[] staffArray) {
		this.staffArray = staffArray;
	}
	
	/**
	 * 构造方法  -- 设置部门名称,部门编号
	 * @param depName
	 * @param depNum
	 */
	public Department(String depName, String depNum) {
		this.setDepName(depName);
		this.setDepNum(depNum);
	}
	public Department() {
		
	}
	
	/**
	 * 将同部门的员工填入数组中
	 * @param sta -- 形参内填写测试类中员工的实例化对象
	 */
	public void addStaff(Staff sta){
		int i;
		for (i = 0;i < this.getStaffArray().length;i++){
			if (this.getStaffArray()[i] == null) {
				this.getStaffArray()[i] = sta;
				break;
			}
		}
		//填写部门人数
		this.setStaffNums(i + 1);
	}
	
}

职位类:

package com.dodoke.project;

public class Position {
	//设置职位类的私有
	private String posName;//职位名称
	private String posNum;//职位编号
	
	//get\set方法
	public String getPosName() {
		return posName;
	}
	public void setPosName(String posName) {
		this.posName = posName;
	}
	public String getPosNum() {
		return posNum;
	}
	public void setPosNum(String posNum) {
		this.posNum = posNum;
	}
	
	/**
	 * 构造方法  -- 设置职位名称,职位编号
	 * @param posName
	 * @param posNum
	 */
	public Position(String posName, String posNum) {
		this.setPosName(posName);
		this.setPosNum(posNum);
	}
	public Position(){
		
	}
}

员工类:

package com.dodoke.project;

public class Staff {
	//设置员工类私有属性
	private String staffName;//员工姓名
	private String staffNum;//工号
	private String staffSex;//性别
	private int staffAge;//年龄
	
	//使用对象作为属性
	//添加职位属性 、部门属性
	private Position pos;
	private Department dep;

	
	//get\set方法
	public String getStaffName() {
		return staffName;
	}
	public void setStaffName(String staffName) {
		this.staffName = staffName;
	}

	public String getStaffNum() {
		return staffNum;
	}
	public void setStaffNum(String staffNum) {
		this.staffNum = staffNum;
	}

	public String getStaffSex() {
		return staffSex;
	}
	public void setStaffSex(String staffSex) {
		//如果输入的性别非“男”、非“女” 设置默认为“男”
		if(!staffSex.equals("男") && !staffSex.equals("女")){
			this.staffSex = "男";
		}else{
			this.staffSex = staffSex;
		}
	}

	public int getStaffAge() {
		return staffAge;
	}
	public void setStaffAge(int staffAge) {
		//如果输入的年龄不在181-65之间。设置默认为18岁
		if (staffAge < 18 || staffAge > 65) {
			this.staffAge = 18;
		} else {
			this.staffAge = staffAge;
		}
	}
	
	public Department getDep() {
		if(this.dep == null){
			this.dep = new Department();
		}
		return dep;
	}
	public void setDep(Department dep) {
		this.dep = dep;
	}

	public Position getPos() {
		if(this.pos == null){
			this.pos = new Position();
		}
		return pos;
	}
	public void setPos(Position pos) {
		this.pos = pos;
	}
	
	/**
	 * 构造方法 -- 输入实例化对象的具体参数
	 * @param staffName -- 姓名
	 * @param staffNum -- 工号
	 * @param staffSex -- 性别
	 * @param staffAge -- 年龄
	 * @param dep -- 测试类中部门的实例化对象
	 * @param pos -- 测试类中职位的实例化对象
	 */
	public Staff(String staffName, String staffNum, String staffSex, int staffAge, Department dep, Position pos) {
		this.setStaffName(staffName);
		this.setStaffNum(staffNum);
		this.setStaffSex(staffSex);
		this.setStaffAge(staffAge);
		this.setPos(pos);
		this.setDep(dep);
	}

	public Staff() {

	}
	
	//员工共信息介绍
	public String info(){
		String str = "姓名:" + this.getStaffName();
		str += "\n工号:" + this.getStaffNum();
		str += "\n性别:" + this.getStaffSex();
		str += "\n年龄:" + this.getStaffAge();
		str += "\n职务:" + this.getDep().getDepName() + this.getPos().getPosName();
		return str;
	}

}

测试类:

package com.dodoke.test;

import com.dodoke.project.Department;
import com.dodoke.project.Position;
import com.dodoke.project.Staff;

public class test {
	public static void main(String[] args){
		
		//部门
		Department dep1 = new Department("人事部","D001");
		Department dep2 = new Department("市场部","D002");
		
		//职位
		Position pos1 = new Position("经理","P001");
		Position pos2 = new Position("助理","P002");
		Position pos3 = new Position("职员","P003");
		
		//员工
		Staff sta1 = new Staff("张铭","S001","男",29,dep1,pos1);
		Staff sta2 = new Staff("李艾爱","S002","女",21,dep1,pos2);
		Staff sta3 = new Staff("孙超","S003","男",29,dep1,pos3);
		Staff sta4 = new Staff("张美美","S004","女",26,dep2,pos3);
		Staff sta5 = new Staff("蓝迪","S005","男",37,dep2,pos1);
		Staff sta6 = new Staff("米莉","S006","女",24,dep2,pos3);
		
		//输出员工信息
		System.out.println(sta1.info());
		
		//将员工同部门的员工添加到数组
		dep1.addStaff(sta1);
		System.out.println("======================");
		System.out.println(sta2.info());
		dep1.addStaff(sta2);
		System.out.println("======================");
		System.out.println(sta3.info());
		dep1.addStaff(sta3);
		System.out.println("======================");
		System.out.println(sta4.info());
		dep2.addStaff(sta4);
		System.out.println("======================");
		System.out.println(sta5.info());
		dep2.addStaff(sta5);
		System.out.println("======================");
		System.out.println(sta6.info());
		dep2.addStaff(sta6);
		
		System.out.println("======================");
		
		//输出各部门有多少人
		System.out.println(dep1.getDepName() + "总共有" + dep1.getStaffNums() + "名员工");
		System.out.println(dep2.getDepName() + "总共有" + dep2.getStaffNums() + "名员工");
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值