SimpleDateFormat和List事例

通过一段小程序练习一下
某软件公司要对公司的员工进行一次人员整理, 业务要求如下:
其中员工有如下信息, 姓名, 所属部门, 生日, 入职日期, 在公司工作的时长(以月份为单位),假如有如下职员信息
序号 姓名(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;
		}
		
	}
	
	
}

``
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值