文档库 最新最全的文档下载
当前位置:文档库 › 计算机科学与技术毕业论文设计

计算机科学与技术毕业论文设计

****大学毕业论文(设计)员工假期管理之数据统计

完成日期 2009年5月13日

****大学本科毕业论文(设计)开题报告

摘要

随着企业规模的发展与扩大,员工数量与员工职位的增多将对员工假期管理带来一定的压力,假期的申请手续,假期类型的繁多以及假期的统计,这些都对管理员带来不便,传统的管理手段对大量的数据进行统计非常容易出错,这对企业的发展是不利的,因此必须采用信息化手段对员工假期进行管理,将假期管理规范化。

员工假期管理系统能很好的帮助企业进入信息化,使员工的管理更加清晰,明了。

关键词:管理信息系统,数据统计,数据库

Abstract

As the scale of business development and expansion of the number of staff positions and an increase in staff will leave the management of certain employees of the pressure, leave the application procedures for many types of holidays and holiday statistics, which are causing inconvenience to the administrator, traditional management by means of a large number of statistical data are very prone to error, which is detrimental to the development of enterprises, and therefore must be used by means of information technology to manage staff holidays, leave the management of standardization.

Staff holidays can be a good management system to help enterprises to enter the information, so that the management of employees is more clearly understood.

Key words: management information systems, statistics, databases.

目录

1 绪论 (5)

1.1 问题定义和内容简介 (5)

1.2 研究背景和意义以及文档结构安排 (5)

1.3 相关软件简介 (5)

2 系统需求分析和模块设计 (6)

2.1 系统功能需求分析 (6)

2.1.1 假期类型维护 (6)

2.1.2 员工固定假期维护 (6)

2.1.3 员工假期申请 (7)

2.1.4 员工假期查询审批 (7)

2.1.5 假期报表 (7)

2.2 系统功能模块设计 (7)

2.3 数据库设计 (9)

3 系统的设计与实现 (12)

3.1 框架介绍 (12)

3.1.1 Struts2 (12)

3.1.2 Spring (13)

3.1.3 Ibatis (13)

3.2 框架搭建 (14)

3.2.1 配置数据源 (14)

3.2.2 建立dao层与service层 (15)

3.2.3 注入dao层与service层 (16)

3.2.4 配置ibatis映射文件 (17)

3.3 用户登录 (17)

3.4 员工假期申请 (18)

3.5 管理员审批假期 (19)

3.6 管理员查看假期信息 (20)

4 系统功能简介和评价 (23)

结论 (24)

参考文献 (24)

1 绪论

1.1 问题定义和内容简介

在过去一段时间,很多假期管理都是用人工方法进行的,并且是用纸媒记录数据,这样很容易照成数据的丢失,而且查阅起来也很不方便。为了能让系统跟上经济飞速发展的当前社会,运用软件管理将能使这一问题得到合理的解决。用软件管理假期不需要使用大量的纸媒,数据不易丢失,软件的使用方便,简单,操作性更好,对数据的查询十分快捷。运用软件对员工假期进行管理是当前社会的趋势。

1.2 研究背景和意义以及文档结构安排

在现代企业中,信息管理工作将发挥越来越重要的作用。可以说,在企业的信息化管理工作中,计算机管理则成为标志着一种高科技、高效率和高水准的使用工具,它已经渗透到各行业各企业日常工作的许多方面,无论是自身还是其发挥的作用,都为企业的创新、发展以及经济效益的创造方面,做出了显著的贡献。

开发出一款理想的员工假期管理系统需要一个详细的计划安排,流程的安排是这样:需求分析,概要设计,详细设计,编码,测试。

开发的过程中离不开文档,文档是进行开发的依据,在开发的每个阶段都要制定出合理可靠的文档,开发过程中严格按照文档进行作业。

1.3 相关软件简介

本系使用oracle XE数据库软件,eclipse开发工具,svn版本控制工具,erwin建模工具,jdk6.0,tomcat5.5。

2 系统需求分析和模块设计

所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,“需求分析”就是确定要计算机“做什么”。

在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。

在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它是整个过程中最关键的一个过程。假如在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件无法在规定的时间里完工。

2.1 系统功能需求分析

该系统能完成员工假期的申请,审批及员工的假期维护和统计。

2.1.1 假期类型维护

完成假期类型的定义,假期类型必须能标识是否受限(申请时检查)。

假期类型包括:年假,事假,婚假,补休假,病假。

2.1.2 员工固定假期维护

查询员工的固定假期,新增假期类型数据,修改已存在假期数据,该功能由管理员使用。

2.1.3 员工假期申请

员工申请休假,如果是有限制的假期如年假,则需要检查申请的假期天数是否超过允许的天数,超过则申请不成功;申请成功则可用假期数减少相应天数。

2.1.4 员工假期查询审批

管理员查询假期申请单,批准或不批准,如果不批准,则员工可用假期数需要回补。

2.1.5 假期报表

按月统计有假员工各类假期的请假时长,每个员工一条记录,可存为EXCEL。

2.2 系统功能模块设计

所谓的模块化设计,简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。

逐步求精的结果是得到一系列以功能块为单位的算法描述。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。

系统的大模块主要分为员工模块与管理员模块,但是功能模块又分有几大模块。开发小组对上述的需求进行集中讨论,按照结构化程序设计的要求得出模块图 2-1。

图2-1 总的模块划分

由于登录模块由其它小组负责,固本文不重点阐述。登录模块可分为管理员模块与员工模块,根据以上模块与登录模块得到大致的流程图 2-2.如下

员工假期申请模块主要是针对员工的,模块的主要功能有填写假期申请单,提交申请单。

假期类型维护模块功能是显示出现有的假期类型数据,当中有的假期类型是受限的。

假期报表模块功能有显示全部有假员工的月假期数据,将数据打印成execl文件。

员工固定假期维护模块,主要是对假期类型的数据进行修改。

员工假期查询审批模块,它的功能是查询出未审批的假期申请单,对假期申请单进行审批。

图2-2 流程图

当不同的身份的用户登录系统将会有不同的功能。

2.3 数据库设计

至今,数据库设计的很多工作仍需要人工来做,除了关系型数据库已有一套较完整的数据范式理论可用来部分地指导数据库设计之外,尚缺乏一套完善的数据库设计理论、方法和工具,以实现数据库设计的自动化或交互式的半自动化设计。所以数据库设计今后的研究发展方向是研究数据库设计理论,寻求能够更有效地表达语义关系的数据模型,为各阶段的设计提供自动或半自动的设计工具和集成化的开发环境,使数据库的设计更加工程化、更加规范化和更加方便易行,使得在数据库的设计中充分体现软件工程的先进思想和方法。一般,数据库的设计过程大致可分数据库设计为

5个步骤:需求分析,概念设计,逻辑设计,物理设计,验证设计。

由于实习的公司是外包企业,数据库表与字段名都要求用英文。

根据需求分析与模块设计,最终将为系统建立六各表,表名分别为EMPLOYEE,EMPLOYEE_HOLIDAY,HOLIDAY_TYPE,HOLIDAY_APPLICATION,STATE,COMMON_HOLIDAY。建模工具采用的是Erwin,建模图例如图所示

图2-3 数据库模型

EMPLOYEE表:

处理用户登录的表,主要字段有EMPLOYEE_ID(员工ID)主键,POPEDOM(身份),EMPLOYEE_NAME(用户名),PASSWORD(密码)。

HOLIDAY_TYPE表:

用来存放假期类型,主要字段有HOLIDAY_TYPE_ID(假期类型ID),HOLIDAY_TYPR_NAME(假期名字),LIMIRORNOT(是否受限),LIMIT_DAYS(上限天数)。

EMPLOYEE_HOLIDAY表:

员工受限假期表,每个员工的受限假期情况都有不同,例如年假中老员工与新员工的假期天数是不同的。主要字段有HOLIDAY_TYPE_ID(受限假期ID),AVAILABLE_DAYS(受限天数),EMPLOYEE_HOLIDAY_ID(用户ID)。

HOLIDAY_APPLICATION表:

此表主要用来处理员工假期的申请,查询,管理员审批,查询。主要字段有MAKER_ID(流水ID)主键,FROM_DATE(开始时间),TO_DATE(结束时间),REGISTER_TIME(登记时间),STAT_MONTH(请假月份),HOLIDAY_TYPE_ID(假期类型ID)外键,EMPLOYEE_ID(员工ID)外键,STATE_ID(状态ID)外键,HOLIDAY_DAYS(请假天数)。

STATE表:

用来标记每一条假期记录的状态,如未审批,审批通过,等待审批。字段有STATE_ID(状态ID),STATE_NAME(状态名).

COMMON_HOLIDAY表:

用来存放一些公共假期,如五一,国庆,中秋。字段有

COMMON_HOLIDAY_ID(公共假期ID),HOLIDAY_START_TIME(假期开始时间),HOLIDAY_INTRODUCE(假期简介),HOLIDAY_NAME(假期名字),HOLIDAY_END_TIME(假期结束时间).

3 系统的设计与实现

本系统是基于J2EE所开发的。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP (Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。

数据库的表建立时,同时要伴随着系统的设计,各表之间的关系就是系统设计的重点。

本系统使用的框架技术是Struts2+spring+ibatis。

3.1 框架介绍

3.1.1 Struts2

Apache Struts2是一个优雅的,可扩展的JAVA EE web框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。

Struts2框架是一个基于MVC架构的框架,由于它的核心设计思想来源于WebWork,Struts2框架中MVC模型各部分构成有控制器,模型,视图。在本系统中应用Struts2将表单提交过来的内容进行验证,对输入进行校验。对于Struts2框架来说,他不仅仅是一个MVC框架,还是一个轻量级的容器。使用此容器能够使我们在基本Web容器的基础上,

根据需要增加其他新的特性。除此之外,Struts2框架还允许我们在应用中使用其他轻量级容器,比如目前较为流行的轻量级容器Spring。而且在Struts2应用中使用其他容器的时候,我们需要做的只是加入少量的配置信息。从这一点上来说,更加体现出了Struts2框架的灵活性。

3.1.2 Spring

在Java EE开发设计中,Spring框架主要被应用于业务层,它的作用就是将中间件服务传递给耦合松散的POJO。通过Spring来管理业务流程,使得开发者能够国家专注与业务逻辑并且是测试过程变得更加简单。Spring的核心技术之一就是依赖注入,在开发设计过程中,整个应用中无论是Action层对象,还是服务层的Service对象,抑或是持久层的DAO对象,如果想要调用其它层的对象,只需调用一个该对象提供的接口即可,而不用去关心这个对象的具体实现过程。如此一来我们的编码就拥有了更大的灵活性,也更利于后期的维护工作。在Spring框架中,各个对象的具体实现对于其他对象来说都是透明的,完全由Spring容器管理所有对象。

传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。

Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。

3.1.3 Ibatis

iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin 在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java 的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects (DAO),同时还提供一个利用这个框架开发的JPetStore实例。

相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

Ibatis是一种数据映射器,同时它也是一种可以应用于Java的持久层框架。Ibatis

通过配置文件加载数据源,映射字段与Java对象的属性,完成数据的持久化。Ibatis与其他持久层框架一样,都可以简化开发过程中数据持久化的操作。Ibatis持久化是通过配置xml文件实现的。通常需要两个配置文件,一个用来配置ibatis自身的一些属性信息,缓存机制,事务处理方式以及数据源;另一个是映射文件,将数据表映射到领域模型层对象。映射文件需要编写sql语句,ibatis支持“#”作为它的持久化语句的参数占位符,运行时这些占位符将被赋予参数值,然后对目标数据库进行持久化操作。

3.2 框架搭建

首先在web.xml中加载spring配置文件,添加如下语句:

contextConfigLocation

/WEB-INF/classes/applicationContext.xml

3.2.1 配置数据源

applicationContext.xml是spring的配置文件,在里面进行添加数据源,

applicationContext.xml里还要导入ibatis配置文件,方法如下:

classpath:sqlMapConfig.xml

3.2.2 建立dao层与service层

用eclipse新建项目,名称为hrms,新建包com.hrms.dao,在里面分别建立接口AdminDao与EmployeeDao。在包com.hrms.dao.Impl里建立接口的实现AdminDaoImpl和EmployeeDaoImpl。

新建包com.hrms.service,在里面分别建立接口AdminService与EmployeeService。在包com.hrms.service.Impl里建立接口的实现AdminServiceImpl和EmployeeServiceImpl。

AdminService与EmployeeService里面分别对应着管理员和员工的一些功能和操作,例如在AdminService里定义

public interface AdminService {

/**

* 管理员审核申请表

* @param makerId

* @throws Exception

*/

void agreeApplication(Integer makerId)throws Exception;}

而在接口的实现中需要调用到dao层的接口,并且是对接口定义的方法进行具体的操作,如:

public class AdminServiceImpl implements AdminService {

private AdminDao adminDao; //调用dao层接口

public void setAdminDao(AdminDao adminDao) {

this.adminDao = adminDao;

}

/**

* 管理员审核申请表-同意操作

* @param makerId

* @throws Exception

*/

public void agreeApplication(Integer makerId) throws Exception { adminDao.agreeApplicationByMakerId(makerId);

}

}

3.2.3 注入dao层与service层

新建好dao层与service后,在spring的配置文件applicationContext.xml中要进行注入,如:

3.2.4 配置ibatis映射文件

新建包com.hrms.vo,在里面建立需要映射表的javabean,里面的属性要与数据库表的字段属性对应,然后建立xml映射文件进行映射,如:javabean中有employeeID这个属性,在xml里进行映射为

在映射文件里,所有对数据库的新增,更新,查询,删除操作的sql语句都要在这里面写。

3.3 用户登录

用户登录界面如图所示

图3-1登录界面

由于登录界面由其它小组完成,固本小组只需简单制作登录模块。当用户输入用户名和密码时,还需在输入框下面的权限按钮进行选择,这关系到成功登录后进入的界面。表单的内容提交到后台action里通过调用ibatis对用户名,密码,身份进行判断,再由判断的结果决定跳转到的页面。当用户成功登录以后,用户的ID信息将会保存在session 中,以便在将来的功能中使用。

3.4 员工假期申请

该模块中,员工可以填写假期申请信息并提交。首先,员工需要选择请假的假期类型,如年假,病假,事假等。然后选择假期开始的时间与结束的时间,最后按提交按钮。

提交后,首先在前台的jsp页面中运用jsvascript技术对表单进行检验,如假期类型有没选择,请假时间是否已经填写等。

当前台jsp页面验证无误后则转到后台相应的action中进行进一步的处理。首先在action中要对提交过来的假期类型进行判断。判断其是否是受限假期类型,以便决定用何种方法进行处理。若假期类型不是受限假期类型,则请假天数就是填写申请表时的假期结束时间减去假期开始时间;若假期类型是受限假期类型,则还要在数据库中查询相应受限假期类型的数据,看看其受限的天数有多少。如员工张三请年假10天,而张三的年假可

用天数只有5天,则在action中就会做出判断并跳转到提示页面进行提示超出可用请假

天数。员工假期申请页面如图

图3-2 假期申请页面

进行员工假期申请时,对数据库的主要操作有:将表单传过来的假期类型与数据库中HOLIDAY_TYPE表中的数据进行比对,看看假期类型是否受限,若受限,则查询EMPLOYEE_HOLIDAY中当前用户的受限假期类型的受限天数,然后在action中进行判断操作,最后将假期申请插入HOLIDAY_APPLICATION表中。在HOLIDAY_APPLICATION中,新加入的假期申请的STATE_ID字段要与STATE表中的字段对应,而且STATE_NAME都要是waiting,表示正在等待管理员审批。当员工提交了申请单后,在action中会运用javamail 技术向管理员的邮箱发送提示邮件,提醒管理员对假期申请进行审批。

3.5 管理员审批假期

当有用户申请了假期,管理员可以登录系统进行审批,管理员的审批页面会显示员工的假期申请单,在假期申请单的后面可执行两种审批操作,分别是同意和拒绝。在申请单中也会列出请假员工的姓名,请假时间等信息,管理员可以根据这些信息决定进行何种审批操作。审批页面如下:

图3-3 管理员审批页面

审批页面对申请单的显示是采用分页显示,运用了ibatis的分页功能。显示这些数据是十分重要的。在HOLIDAY_APPLICATION中存放的数据就是申请单,每一个一组就是一条假期申请单,这些申请单数据中有些已被审批,有些还未审批,所以要有选择的将这些数据进行提取。而申请单的状态是保存在另一个表STATE里,所以要使用连接查询,查询出状态是在等待的申请单,然后将其显示在审批页面。其中主要sql查询语句为:select * from holiday_application ha , holiday_type ht,employee e

where ha.holiday_type_id = ht.holiday_type_id and STATE_ID=#stateId# and

ha.EMPLOYEE_ID = e.EMPLOYEE_ID

order by MAKER_ID

3.6 管理员查看假期信息

这个功能中管理员查看有假员工的信息,显示页面中每个员工一条记录,其中要有

员工各类假期的信息,还要能将页面保存为execl文件。该功能前台的显示页面看似简单,

相关文档