通过一段小程序练习一下
某软件公司要对公司的员工进行一次人员整理, 业务要求如下:
其中员工有如下信息, 姓名, 所属部门, 生日, 入职日期, 在公司工作的时长(以月份为单位),假如有如下职员信息
序号 姓名(String) 所属部门(String) 生日(Date) 入职日期(Date) 工作时长/月(int)
1 张无忌 人事部 1989-10-20 2010-10-20 计算得知
2 任盈盈 市场部 1992-11-20 2017-10-20 计算得知
3 向问天 人事部 1971-5-20 1999-10-20 计算得知
4 练霓裳 研发部 1980-10-26 2014-10-20 计算得知
5 张三丰 研发部 1976-4-22 2000-10-20 计算得知
编写一个Employee员工类并提供定义私有的以上所述员工属性, 标准的设置getXX和setXX方法,
编写员工管理类EmployeeManagerSupport,此类应提供如下2个基本功能方法
public void input(Employee emp){ } 此方法实现对员工的录入功能, 将录入的员工存储在当前类的成员属性List中
public Employee [ ] findEmp(int month ){ } 此方法实现对入职时间超过month个月员工查找功能,并返回符合条件的员工数组,这些员工将被提升2及工资
public Employee [ ] findEmp(Date date){ } 此方法实现对出生早于date日期的员工查找功能并返回符合条件的员工数组 ,这些员工将被授予突出贡献奖
编写包含主方法的类,从控制台调用录入方法实现将上表中信息实现录入, 接着再 调用相对的input方法,实现输出哪些员工符合2级涨薪条件,哪些员工能够被授予突出贡献奖. 在控制台输出这些员工的姓名及部门等信息.
Employee
import java.util.Date;
/***
* 提供定义私有的以上所述员工属性, 标准的设置getXX和setXX方法
* @author 菜鸡
*
*/
public class Employee {
private String name;//员工名字
private String department;//4所属部门
private Date birth;//员工生日
private Date hireDate;//入职日期
private int workingTime;//工作时长
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public Date getHireDate() {
return hireDate;
}
public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}
public int getWorkingTime() {
return workingTime;
}
public void setWorkingTime(int workingTime) {
this.workingTime = workingTime;
}
}
EmployeeManagerSupport
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
/***
* 实现对员工的录入功能
* 查找2级工资员工
* 查找贡献员工
* @author 菜鸡
*
*/
public class EmployeeManagerSupport {
List employees = new ArrayList();
Scanner in = new Scanner(System.in);
Employee []emps2 = new Employee[5];
/*
* 实现对员工的录入功能
* 将录入的员工存储在当前类的成员属性List<Employee >中
*/
public void input(Employee emp) {
/*将员工信息填入List*/
employees.add(emp);
}
/*
* 此方法实现对入职时间超过month个月员工查找功能,
* 并返回符合条件的员工数组,这些员工将被提升2及工资
*/
public Employee [] findEmp(int month ) {
Employee []emps = new Employee[5];
for (Object obj:employees) {
Employee emp = (Employee)obj;
int i=0;
if(emp.getWorkingTime()>month) {
emps[i]=emp;
i++;
}
}
return emps;
}
/*
* 此方法实现对出生早于date日期的员工查找功能并返回符合条件的员工数组 ,
* 这些员工将被授予突出贡献奖
*/
public Employee [ ] findEmp(Date date) {
Employee []emps2 = new Employee[5];
for (Object obj:employees) {
Employee emp = (Employee)obj;
int i=0;
if(emp.getBirth().before(date)) {
emps2[i]=emp;
i++;
}
}
return emps2;
}
}
EmployeeInput
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
/***
* 输入员工信息
* @author lenovo
*
*/
public class EmployeeInput {
static Employee employee = new Employee();
/*控制台输入员工信息*/
public static Employee input() {
Calendar time = Calendar.getInstance();
Calendar hireDate = Calendar.getInstance();
Scanner in = new Scanner(System.in);
System.out.println("开始录入员工信息");
System.out.print("请输入员工姓名");
employee.setName(in.next());
System.out.print("请输入员工所属部门");
employee.setDepartment(in.next());
/*
* 录入员工生日
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化
System.out.print("请以XXXX-XX-XX形式输入员工生日");
try {
employee.setBirth(sdf.parse(in.next()));
} catch (ParseException e) {
e.printStackTrace();
}
/*
* 录入员工入职日期
*/
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
System.out.print("请以XXXX-XX-XX形式输入员工入职日期");
try {
employee.setHireDate(sdf2.parse(in.next()));
} catch (ParseException e) {
e.printStackTrace();
}
/*
* 计算得员工工作时长
*/
hireDate.setTime(employee.getHireDate());
employee.setWorkingTime((time.get(time.YEAR)-hireDate.get(hireDate.YEAR))*12+
time.get(time.MONTH)-hireDate.get(hireDate.MONTH));
return employee;
}
}
Test
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/***
* 这是一个测试类
* 包含一个main方法
* @author 菜鸡
*
*/
public class Test_Employee {
public static void main(String []args) {
EmployeeManagerSupport emp = new EmployeeManagerSupport();
/*测试输入员工信息类*/
for(int i=1;i<=5;i++) {
emp.input(EmployeeInput.input());
}
/*输出员工信息*/
System.out.println("所有员工信息");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期格式化对象
for(Object obj:emp.employees) {
Employee emp2 = (Employee)obj;//强转
String birth = sdf.format(emp2.getBirth());
String hireDate = sdf.format(emp2.getHireDate());
System.out.println(emp2.getName()+"\t"+emp2.getDepartment()+"\t"+
birth+"\t"+hireDate+"\t"+emp2.getWorkingTime());
}
/*测试2级工资查找类*/
for(Employee empl:emp.findEmp(48)) {
if(empl!=null)
System.out.println("获得2级工资的是"+empl.getName());
else
break;
}
/*测试贡献员工查找类*/
Calendar time = Calendar.getInstance();
time.set(1985, 1, 1);
Date date = time.getTime();
for(Employee empl2:emp.findEmp(date)) {
if(empl2!=null)
System.out.print("获得贡献员工奖的是"+empl2.getName());
else
break;
}
}
}
``