2020-12-17Calendar主要常量字段/Calendar主要方法/LIst集合接口/ArrayList集合实现类/简单的部门管理系统

Calendar主要常量字段

AM 指示从午夜到中午之前的这段时间的 AM_PM字段值(0)
PM 指示从中午到午夜之前的这段时间的 AM_PM字段值(1)
AM_PM 指示从当前日历获取AM_PM对应的AM或PM值(0或1)
YEAR 日历中的年份
MONTH 日历中当前的月份,0-11(实际应+1)
DATE 日历中当月的天,1-31
HOUR 日历12小时制表示0-11
HOUR_OF_DAY 日历24小时制表示(0-23)
MINUTE 指示一小时中的分钟(0-59)
SEXOND 指示一分钟中的秒(0-59)
MILLISECONF 指示一秒中的毫秒(0-999)
WEEK_OF_MINTH 日历中当月的第几周(1-4)
WEEK_OF_YEAR 日历中当年的第几周(1-54)

Calendar主要方法

public abstract void add(int field,int value)
更改日历中某个字段field的值

public boolean after(Object when)
判断日历当前时间是否在给定的时间之后

public boolean before(Object when)
判断日历当前时间是否在给定的时间之前

public int compareTo(Calendar anotherCalendar)
比较两个Calendar的时间值从历元到现在的毫秒差

public final Date getTime()
获取日历当前日期时间对象(java.util.Date)

public void set(int field,int value)
将给定的日历字段field设置为给定value

public final void set(int year,int month,int date)
设置日历的年份、月份、日期值

public final void set(int year,int month,int date,int hourOfDay,int minute,int second)
设置日历的年、月、日、时、分、秒的值

	/**
	 * 根据给定的tags标准对给定的y年,m月,d日组合为String.或Date对象返回
	 * @param y 年
	 * @param m 月
	 * @param d 日
	 * @param tags 返回符合tags所标志的Object对象(String OR Date)
	 * @return
	 */
	public static Object formatDateAyTags(int y,int m,int d,int tags) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, y);
		cal.set(Calendar.MONTH, m);
		cal.set(Calendar.DATE, d);
		
		if(tags == 0) {
			return cal.getTime();//返回Date对象
		}
		
		return new SimpleDateFormat("yyyy年MM月dd日").format(cal.getTime());//返回String对象
	}
			Scanner in = new Scanner(System.in);
		System.out.println("输入生日年份");
		int y = in.nextInt();
		System.out.println("输入月份");
		int m = in.nextInt();
		System.out.println("输入生日是几号");
		int d = in.nextInt();
		Object obj = DateSupport.formatDateAyTags(y, m-1, d, 0);
		if (obj !=null && obj instanceof java.util.Date) {
			System.out.println(((Date)obj).toLocaleString());
		}if (obj != null && obj instanceof String) {
			System.out.println(obj);
		}

12-16的思考题答案

1.将给定的员工生日按照给定的日期部分进行更改
可能对年份进行增减,可能对月份进行增减,可能对天进行增减

	/**
	 * 对给定的员工生日进行操作,对年或月或日进行增减
	 * @param emp 员工对象
	 * @param num 增减的数(正数为增加,负数为减少)
	 * @param dateTag 表示对那部分日期进行修改(1=年,2=月,3=日期)
	 * @param addOrSub 表示增加或减少(1=增加;-1=减少)
	 */
public static void modfyBirth(Employee emp,int num,int dateTag,int addOrSub) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(emp.getBirth());
		if (addOrSub == 1) {
			if (dateTag == 1) {//对年进行增加
				cal.add(Calendar.YEAR, num);
			}if (dateTag == 2) {//对月进行增加
				cal.add(Calendar.MONTH, num);
			}if (dateTag == 3) {//对日期进行增加
				cal.add(Calendar.DATE, num);
			}
		}
		if (addOrSub == -1) {//减少
			if (dateTag == 1) {//对年进行减少
				cal.add(Calendar.YEAR, -num);
			}if (dateTag == 2) {//对月进行减少
				cal.add(Calendar.MONTH, -num);
			}if (dateTag == 3) {//对日期进行减少
				cal.add(Calendar.DATE, -num);
			}
			
		}
		emp.setBirth(cal.getTime());
	
	}
		Date birth = new Date(2232211343L);
		Employee emp = new Employee("萨马兰奇",birth);
		System.out.println(emp.getName()+" 未修改前生日 "+new SimpleDateFormat("yyyy-MM-dd").format(emp.getBirth()));
		DateSupport.modfyBirth(emp, 10, 1, 1);
		System.out.println(emp.getName()+" 修改后生日"+new SimpleDateFormat("yyyy-MM-dd").format(emp.getBirth()));

3.将给定的2个日期进行比较,返回这两个日期的相差天数的非负值。

	/**
	 * 比较2个日期的天数差,并以正数的方式返回
	 * @param date0
	 * @param date2
	 * @return
	 */
	public static long compDate(Date date0,Date date2) {
		long res = Math.abs(date0.getTime()-date2.getTime());
		return (res/1000/60/60/24);
		
	}
		Date birth = new Date(56416541651L);
		Date birth2 = new Date(44654156156L);
		System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(birth));
		System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(birth2));
		System.out.println("天数差是"+DateSupport.compDate(birth, birth2));

List集合接口规范概述

List接口继承自——Collection——Iterable
Iterable接口循环迭代方式访问集合中的数据元素,定义了唯一 一个但会指向集合的Iterator迭代器。它主要通过foreach方式处理集合中的元素,任何其实现类都可以通过获取指向集合的迭代实现对集合的遍历。
List接口间接继承自Iterable接口并在Collection直接父接口基础上定义更多的可操作方法,最典型就是定义了以索引方式操作集合元素的方法。

List集合接口常用方法

boolean add(Object e)
void add(int index,Object element)指定位置添加
void clear() 清空列表
boolean contains(Object o) 是否包含
Object get(int index) 按索引获取
int size() 集合的大小
Iteratoriterator()
Object remove(int index)
boolean remove(Object o)
Object set(int index,Object element)
public int indexOf(Object target)
boolean isEmpty()
void sort(Comparator comparator)

ArrayList集合实现类

ArrayList集合类是List接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括null在内的所有元素。除了实现List接口外,此类还提供一些方法来操作内部用来储存列表的数组的大小。(此类大致上等同于Vector类,除了此类事不同步的)。ArrayList查找访问集合元素素的比较快,删除,插入随机操作比较慢,经常在企业级开发中使用ArrayList处理数据应用。

简单的部门管理系统

/**
 * 数据访问接口
 * @author Administrator
 *
 */
public interface IDepartmentDao {
	
	void addDepartment(Department dep);
	
	Vector loadDepartments();
	
	Department findDepartmentByName(String depName);
	
	void modifyDepCreateDateById(String id,Integer y,Integer m,Integer d);//修改信息表
	
	void remove(String depname);//删除部门名称为depname的部门信息
}

/**
 * 部门数据访问接口实现组件
 * @author Administrator
 *
 */
public class DepartmentImp implements IDepartmentDao {

	@Override
	public void addDepartment(Department dep) {
		//使用List的add方法实现添加员工到数据库中
		DateBase.getDepartment().add(dep);
		
	}

	@Override
	public Vector loadDepartments() {
		Vector deps = new Vector();//封装所有员工信息列表
		List list = DateBase.getDepartment();//获取部门表中符合要求的数据
		/*
		 * 对List进行遍历获取每条记录封装Department对象
		 */
		for (int i = 0; i < list.size(); i++) {
			deps.add(list.get(i));//获取部门记录存储在向量Vector集合中
		}
		return deps;//返回所有部门信息集合
	}
//思考,为什么要创建一个方法来存储信息到vector,在main方法中用list来加载信息怎么样?
	@Override
	public Department findDepartmentByName(String depName) {
		List depList = DateBase.getDepartment();//获取部门列表
		for (int i = 0; i < depList.size(); i++) {
			Department temDep = (Department)depList.get(i) ;
			if (temDep.getName().equals(depName)) {
				return temDep;//返回此部门
			}
		}
		return null;
	}

	@Override
	public void modifyDepCreateDateById(String id, Integer y, Integer m, Integer d) {
		List depList = DateBase.getDepartment();
		
		for (int i = 0; i < depList.size(); i++) {
			
			Department temp = (Department)depList.get(i);
			if (temp.getId().equals(id)) {//id相同
				Calendar cal= Calendar.getInstance();
				cal.setTimeInMillis(temp.getCreateDate().getTime());
				if (y!=null) {
					cal.set(Calendar.YEAR, y);
				}if(m !=null){
					cal.set(Calendar.MONTH, m-1);
				}if (d!=null) {
					cal.set(Calendar.DATE, d);
				}
				temp.setCreateDate(cal.getTime());//设置新的创建日期
			}
			
			
		
		}
		
	}

	@Override
	public void remove(String depname) {
		List deplist = DateBase.getDepartment();
		for (int i = 0; i < deplist.size(); i++) {
			if (((Department)deplist.get(i)).getName().equals(depname)) {
				deplist.remove(i);//从表中删除部门对象
				break;
				
				
			}
		}
		
	}

}
/**
 * 此类模仿数据库表
 * @author Administrator
 *
 */
public class DateBase {
	/**
	 * 部门信息表
	 */
	private static List departmenttable = new ArrayList();
	
	static {
		Department dep1 = new Department();
		dep1.setId("1001");dep1.setName("人事部");
		Calendar cal1 = Calendar.getInstance();
		cal1.set(Calendar.YEAR, 1998);cal1.set(Calendar.MONTH, 05);
		cal1.set(Calendar.DATE, 03);dep1.setCreateDate(cal1.getTime());//市场部数据
		
		Department dep2 = new Department();
		dep2.setId("1002");dep2.setName("事业部");
		Calendar cal2 = Calendar.getInstance();
		cal2.set(Calendar.YEAR, 1962);cal2.set(Calendar.MONTH, 04);
		cal2.set(Calendar.DATE,9);dep2.setCreateDate(cal1.getTime());//市场部数据
		
		Department dep3 = new Department();
		dep3.setId("1003");dep3.setName("技术部");
		Calendar cal3 = Calendar.getInstance();
		cal3.set(Calendar.YEAR, 2020);cal3.set(Calendar.MONTH, 9);
		cal3.set(Calendar.DATE, 9);dep3.setCreateDate(cal1.getTime());//市场部数据
		departmenttable.add(dep1);
		departmenttable.add(dep2);
		departmenttable.add(dep3);
	}
	public static List getDepartment() {
		return departmenttable;
	}

	public static void setDepartment(List department) {
		DateBase.departmenttable = department;
	}
	
	
}
/**
 * 部门实体类
 * @author Administrator
 *
 */
public class Department {
	private String id;//部门id,唯一标识
	private String name;//部门名称
	private Date createDate;//成立日期
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getCreateDate() {
		return createDate;
	}
	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}
	
	
}
class TestCase {

	IDepartmentDao dao = new DepartmentImp();
	@Test
	void test() {//添加部门信息并查找
		Scanner input = new Scanner(System.in);
		
		for (int i = 0; i < 2; i++) {
			
			System.out.println("请输入部门ID");
			String id = input.next();
			System.out.println("请输入部门名称");
			String name = input.next();
			System.out.println("请输入部门成立的年份");
			int y = input.nextInt();
			System.out.println("请输入部门成立的月份");
			int m = input.nextInt();
			System.out.println("请输入部门成立的日期");
			int d = input.nextInt();
			Department dep = new Department();
			dep.setId(id);dep.setName(name);
			Calendar cal = Calendar.getInstance();
			cal.set(Calendar.YEAR,y);
			cal.set(Calendar.MONTH,m);
			cal.set(Calendar.DATE,d);
			dep.setCreateDate(cal.getTime());
			dao.addDepartment(dep);
		}
			
			//获取所有部门信息
			Vector depVector = dao.loadDepartments();
			System.out.println("部门ID\t\t部门名称\t\t成立日期");
			for (int j = 0; j < depVector.size(); j++) {
				Department depRes = (Department)depVector.get(j);
				System.out.println(depRes.getId()+"\t\t"+
				depRes.getName()+"\t\t"+new SimpleDateFormat("yyyy-MM-dd").format(depRes.getCreateDate()));
		}
		
			
		System.out.println("请输入部门名称为您查找此部门信息");
		String depName = input.next();
		Department target = dao.findDepartmentByName(depName);
		if (target!=null) {
			System.out.println("信息如下");
			System.out.println("部门ID: "+target.getId()+" 部门名称:"+
			target.getName()+"成立时间: "+
					new SimpleDateFormat("yyyy-MM-dd").format(target.getCreateDate()));
		}
	}
	
	
	@Test
	void test02(){//修改部门信息
		System.out.println("输入被修改的部门id");
		Scanner in = new Scanner(System.in);
		String depId = in.next();
		dao.modifyDepCreateDateById(depId, 1963, 10, 12);
		//获取所有部门信息
		Vector depVector = dao.loadDepartments();
		System.out.println("部门ID\t\t部门名称\t\t成立日期");
		for (int j = 0; j < depVector.size(); j++) {
			Department depRes = (Department)depVector.get(j);
			System.out.println(depRes.getId()+"\t\t"+
			depRes.getName()+"\t\t"+new SimpleDateFormat("yyyy-MM-dd").format(depRes.getCreateDate()));
	}
		
	}
	
	@Test
	void test03(){//删除部门信息
		//获取所有部门信息
		Vector depVector = dao.loadDepartments();
		System.out.println("部门ID\t\t部门名称\t\t成立日期");
		for (int j = 0; j < depVector.size(); j++) {
			Department depRes = (Department)depVector.get(j);
			System.out.println(depRes.getId()+"\t\t"+
			depRes.getName()+"\t\t"+new SimpleDateFormat("yyyy-MM-dd").format(depRes.getCreateDate()));
		}
		
		System.out.println("---------------------删除人事部之后");
		String depName = "人事部";
		dao.remove(depName);
		
		//获取所有部门信息
		Vector depVector1 = dao.loadDepartments();
		System.out.println("部门ID\t\t部门名称\t\t成立日期");
		for (int j = 0; j < depVector1.size(); j++) {
			Department depRes = (Department)depVector1.get(j);
			System.out.println(depRes.getId()+"\t\t"+
			depRes.getName()+"\t\t"+new SimpleDateFormat("yyyy-MM-dd").format(depRes.getCreateDate()));
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值