2021-06-09

练习

一、选择

  1. 执行下面代码后,哪几个结论是正确的B
    A. f[0]
    B. f[0] = 0.0
    C. 编译失败
    D. 在运行时抛出异常
    
  2. 执行下面代码后,哪几个结论是正确的(多选)AD
    String[ ] s = new String[10];
    
    A. s[9]为null
    B. s[10]的内容为空字符串
    C. 没有s[0]
    D. s.length=10
    

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



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

任务描述
一、语言和环境

  • 实现语言
    Java语言
  • 环境要求及开发工具
    JDK、Eclipse

二、程序整体要求

  1. 划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。
  2. 类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
  3. 要求Java代码书写、命名符合规范,属性所属数据类型要准确合理,在代码中添加必要的注释
  4. 程序运行效果与提供的页面效果图、结构保持一致,信息间分隔符“=”号数量不做统一要求,文字大小、颜色也不做统一要求
  5. 作业完成后发表在自己的博客上

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

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

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

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

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

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

package com.school.medo;

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) {
	/**
	 * 如何添加部门员工信息到数组中去
	 * 需要将学生数组进行遍历,依次判读数组中保存的元素是否为null
	 * 如果为null就可以用员工信息(员工对象)替代
	 */
    for(int i=0;i<this.getMyStaffs().length;i++) {
        if(this.getMyStaffs()[i]==null) {
            this.getMyStaffs()[i]=sta;
            //将个数保存到个数统计中去
            this.staffNum=i+1;
            return;
        }
    }
}

}
package com.school.medo;

public class Job {
	 // 职务:职务编号、职务名称
    private String jobNo;
    private String jobName;
    private Staff[] myStaffs;
    private int staffNum;

// 无参构造方法
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;
}

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) {
	if(staffNum < 0) {
		this.staffNum = 0;
		return;
	}
	this.staffNum = staffNum;
}
//设置方法,用来统计各个职位有多少员工
	public void jobInfo(Staff staff) {
		for (int i = 0; i < this.getMyStaffs().length; i++) {
			if (this.getMyStaffs()[i] == null) {
				this.getMyStaffs()[i] = staff;
				this.staffNum = i+1;
				return;
			}
		}
	}

}

package com.school.medo;


	public class Staff {
	    // 成员属性:员工姓名、工号、年龄、性别
	    private String staffName;
	    private String staffNo;
	    private int staffAge;
	    private String staffSex;
	    private Department department;
		private Job job;

	    // 无参构造方法
	    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 (staffSex.equals("男") || staffSex.equals("女")){
	    		 this.staffSex = staffSex;
	    	}else{
	    	 this.staffSex = "男";
	    	}
	    }
	    public Department getDepartment() {
			//为安全起见,在返回时,判断department是否已经被实例化了
			if(this.department == null) {
				this.department = new Department();
			}
			return department;
		}
		public void setDepartment(Department department) {
			this.department = department;
		}
		
		public Job getJob() {
			//为安全起见,在返回时,判断post是否已经被实例化了
			if(this.job == null) {
				this.job = new Job();
			}
			return job;
		}
		public void setJob(Job job) {
			this.job = job;
		}
		
	    

	    public Staff(String staffName, String staffNo, int staffAge, String staffSex,
				Department department, Job job) {
			super();
			this.setStaffName(staffName);
			this.setStaffNo(staffNo);
			this.setStaffSex(staffSex);
			this.setStaffAge(staffAge);
			this.setDepartment(department);
			this.setJob(job);
		}

		/**
	     * 员工自我介绍方法
	     * @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 com.school.test;

import com.school.medo.Department;
import com.school.medo.Job;
import com.school.medo.Staff;

public class Test {
	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()+"名员工");
	    //调用职务员工人数统计方法
	    job1.jobInfo(sta1);
	  	job1.jobInfo(sta5);
	  	job2.jobInfo(sta2);
	  	job3.jobInfo(sta3);
	  	job3.jobInfo(sta4);
	  	job3.jobInfo(sta6);
	  	System.out.println("经理有" + job1.getStaffNum() + "名员工");
	  	System.out.println("助理有" + job2.getStaffNum() + "名员工");
	  	System.out.println("职员有" + job3.getStaffNum() + "名员工");
	  	}
	}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值