考勤系统毕业论文.doc_第1页
考勤系统毕业论文.doc_第2页
考勤系统毕业论文.doc_第3页
考勤系统毕业论文.doc_第4页
考勤系统毕业论文.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

考勤系统毕业论文题 目:企业感应卡考勤管理系统设计企业感应卡考勤管理系统设计摘 要作为一种有效的系统实现框架,Struts + Spring + Hibernate (SSH)已成为Java开发的主流体系。每个框架分别负责一个层次的实现,每层在应用程序中都有明确的责任。每一应用层彼此独立且保持一致。该框架以一种松散耦合的方式彼此作用,而无需负责低层的技术细节,使得开发的系统层次清晰,对编程的持续、代码的扩展和系统的维护更加方便。ExtJS是一个用JavaScript写的,与后台技术无关的Ajax框架,用于在客户端创建丰富多彩的Web应用程序界面,给用户交互一个很好的体验;ExtJS也可以广泛用在基于.Net、Java、Php等开发的系统应用中。本文阐述了基于感应卡采集数据而实现的一个考勤管理系统,采用了ExtJS和SSH技术进行了具体实现。本文首先介绍了系统的相关背景,所用技术的相关现状和发展趋势,并详述了所需的技术背景;然后详细分析了各系统功能模块;接着从表示层、业务层、数据访问层分别对系统的设计进行了阐述;最后叙述了系统的具体功能实现。该考勤系统在前端界面上用ExtJS来实现,表示层使用了Struts技术,业务层使用Spring来完成,持久层则采用现在很流行的轻量级组件Hibernate。该系统的整体结构清晰明了,页面美观,呈现了一个很好的总体效果。关键词:考勤管理系统;SSH框架;ExtJS技术AbstractAs an effective system frame, Spring + Struts + Hibernate (SSH) has become the mainstream of system development based on Java. Each frame is responsible for one level. Each level in the application has clear responsibility. Each application layer is independent and consistent with each other. This framework works with each other in a loosely coupled way, and every level does not care about low-level technical details, which makes developed system clearly, and bring more convenient for programs continuance, codes expansion and systems maintenance.ExtJS is an Ajax framework, written by JavaScript, which is nothing to do with background code. It is used for the client to create rich Web application interface, and gives user a very good experience for interaction; it also can be used in the system based on multiple development language, such as .Net, Java, Php and so on.This dissertation introduces design and realization of attendance management system which using ExtJS and SSH technology, based on cards which is responsible for collecting data. At first, this dissertation presents the related technologies system used,these technologies development and trend; Then, it gives the detailed requirment analyse for systems function modules; And then the system design from presentation layer, logic layer and persistence layer side is given in detail. Finally, it shows system realization of some functions. This systems UI is realized by ExtJS, presentation layer is implemented by Struts, logic layer is achieved by Spring, and persistence layer is based on popular lightweight components Hibernate. The overall structure of this system is clear, and it also has beautiful Web pages, of course it shows a good overall effect.Key Words:attendance management system; SSH frame; ExtJS technology目 录1绪论11.1项目背景11.2相关技术现状与发展趋势21.3论文组织结构32技术背景52.1SSH架构52.1.1SSH概述52.1.2SSH架构62.2ExtJS技术92.2.1ExtJS概述92.2.2ExtJS优势93系统分析与设计113.1系统概述113.1.1 角色定义123.1.2 考勤管理123.1.3 请假管理143.2系统设计153.2.1前台设计163.2.2表示层设计173.2.3逻辑层设计183.2.4数据访问层设计183.2.5数据字典194系统的实现274.1ExtJS的相关实现274.1.1ExtJS日期查询请求实现274.1.2ExtJS多选择按钮实现294.1.3ExtJS分页实现304.1.4ExtJS分组实现314.2SSH的配置实现324.2.1web.xml 配置324.2.2Struts配置334.2.3Spring配置334.2.4Hibernate配置344.3数据相关操作355结论37致 谢39参 考 文 献411 绪论1.1 项目背景随着经济的高速发展,以及高科技对经济的影响,用计算机来进行考勤的管理也成为现代化企业运作不可或缺的一部分。考勤管理系统是公司对员工进行考勤记录的管理机制,主要用于对公司员工上、下班进行一般考勤以及包括员工病假、事假、出差等特殊考勤。该系统还包括了管理员工信息如:姓名、员工号、所在部门、职务、联系方式等基本信息。现在利用计算机管理考勤工作,不仅大大降低了考勤人员的工作量,提高了工作效率,使原本复杂的工作变得简单而轻松;使企业减少了对考勤工作的人力和物力的投入,也保证了考勤的准确性和透明度1。多少年来,考勤方式也随着科学技术的进步不断发展和完善。最传统的人工登记考勤方式,由于存在代签、不如实签、人工管理数据等缺点早已被淘汰。打卡是目前考勤的主要方式,但代打卡的问题仍然存在。指纹考勤是目前研究和开发的热点,市场上也出现了不少产品。它拥有指纹的唯一性、方便性和不丢失的特点,并能从根本上解决代考勤问题。但它存在一个严重问题,即不卫生。单位每位职工每天几次地触摸指纹阅读器,使指纹阅读器成为疾病传播的高风险地,且职工人人不能回避。由于SARS等强致命性疾病的爆发,人们的卫生健康意识增强,因此寻找一种非接触性考勤方式非常必要。各单位为加强安全保卫,都制作了感应卡,上有员工照片,姓名、部门、职务、编号(编号和职工一一对应)等,并有严格的佩戴制度,所以在这里提出以感应卡作为识别身份的实体,通过摄像头实时监视识别。借助网络能满足分布式单位的需要,与人事管理系统联合,给企业带来现代化的人事管理2。事实上,现在考勤系统已经有很多,但是采用基于SSH的框架模式和结合EXTJS页面工具来实现的考勤系统,有着它独特的持久稳定优势和清晰美观的界面。因此,本课题的研究目的是使得考勤系统更加完善和美观。这种走在尖端的想法与构思相结合,定能擦出绚烂的火花,让考勤管理不仅在技术上得到可靠的保障,更能呈现出美的享受。1.2 相关技术现状与发展趋势随着科学技术的发展,考勤系统一步步的在走向完善。系统一般将IC卡作为系统使用卡,IC卡分为接触式和非接触式(Contactless Card)。接触式卡片存在着操作慢、环境适应性差、可靠性欠佳等问题,这些先天不足限制了它们在一些重要领域应用。九十年代中期出现的非接触式IC卡, 以其独有的非接触读卡方式、独有的恶劣环境适应能力、优良的电气和机械特性、极高的安全性,受各界用户的青睐,而且将逐渐取代现有的接触式IC卡,成为应用最为广泛的主流卡3。并且在目前的考勤系统行业,有着这样的现状: -wXeue, :hZM$1) 硬件厂家众多,考勤机性能质量不一,作为直接使用者的工厂,难以选择; QN9W 2) 随机附送的考勤软件,因为功能简单,客户往往很难实施成功; ONl 3) 硬件厂家提供的软件,不会给客户进行定制软件开发; |fgUW . 4) 很少有以考勤软件开发为主要业务的软件供应商,多数是经销,服务等方面难以保障。 考勤管理系统是一个相对复杂的系统,每个公司都有各自的特点,很多客户因为对软件的了解不够深入,一旦实施后,才发现系统并不适合相对的需求,实施非常困难。因此实施不成功的因素,决大多数都是因为软件的品质和服务支持,很少是因为考勤机的原因而失败。GOc 而在技术方面,经过数年的竞争和淘汰,Java界的各种框架找到了自己应有的位置4。Spring+Hibernate+Struts已成为Java开发的主流体系5。Struts只是一个MVC框架, 用于快速开发Java Web应用。Struts6实现的重点在于C (Controller),包括ActionServlet/RequestProcessor和开发者定制的Action,也为V(View)提供了一系列定制标签。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑;Spring7是一个轻型容器,其核心是BeanFactory,用以构造开发者所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对BeanFactory的扩展ApplicationContext更加方便开发者实现J2EE的应用;DAO/ORM的实现方便开发者进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。Hibernate8是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。在这个体系中,Spring+Hibernate的地位应该说短期内是难以撼动了5。除了新兴的Jboss Seam作为挑战者之外,几乎难有劲敌。SSH把数据库,实体bean,业务逻辑bean, 都以配置文件的形式整合在一起,封装成MVC模式. 对于编程的持续化,扩展化,维护化都很方便。而且框架的融合,代码的耦合都很不错, 而以上SSH的这些优点9都是jsp+servlet+javaBean这种传统模式不容易实现的。在界面的美化方面,ExtJS使得页面相当美观,让人赏心悦目。ExtJS在2.0之后的界面真的是没得说,不仅华丽,而且相对很成熟。加上ExtJS是一个Ajax框架,是一个用JavaScript写的,用于在客户端创建丰富多彩的Web应用程序界面。ExtJS可以用来开发RIA也即富客户端的AJAX应用,主要用于创建前端用户界面,是一个与后台技术无关的前端Ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。在网络上,考勤系统已经出现了各种各样的版本,可以说,在技术上都比较的成熟,但是这只好像是人类物质生活的满足;人类除了在物质上追求高品质外,还需要精神上的高享受。因此本课题将结合这三种构想来进一步完善考勤管理系统。1.3 论文组织结构本论文总共分为五章:第一章 绪论 绪论部分首先主要阐述了项目背景,然后对相关技术ExtJS和SSH框架的现状和发展趋势进行了一定的说明描述。第二章 技术背景 技术背景这一部分又可以叫做技术分析与探讨,其主要是来详细的介绍系统中使用的ExtJS框架和SSH相关技术,其中包括详述了SSH架构的基本原理和特点,ExtJS技术的发展由来和优势。第三章 系统分析与设计 这一部分着重阐述考勤管理系统设计的思想以及采用的一些方法。首先对系统进行概述,明确系统的需求,确定模块的划分;接着描述系统的设计思想,所运用到的方法和框架模式,还有数据库的详细设计。第四章 系统的实现 这里主要阐述系统实现过程中的一些重要的操作。首先利用界面的截图和相应的代码说明基于ExtJS控制的表示层的实现,这里只选取了较重要的功能来进行说明;然后具体阐述SSH框架的配置内容;最后对数据的相关操作进行说明。第五章 结论 最后一章对系统开发的相关成果进行总结,并提出一些待以后解决的问题。2 技术背景本系统的实现主要使用了SSH架构和ExtJS技术,使用SSH架构使得系统的层次更清晰,结构更稳定,维护更简便;使用ExtJS来实现页面使得系统的界面赏心悦目,让用户有个很好的交互体验。因此,本课题的研究目的是使得考勤系统更加完善和美观。这种走在尖端的想法与构思相结合,定能擦出绚烂的火花,让考勤管理不仅在技术上得到可靠的保障,更能呈现出美的享受。接下来就着重阐述一下SSH架构和ExtJS技术,从而能更清楚的了解它们,使用它们。2.1 SSH架构2.1.1 SSH概述SSH,是Struts、Spring和Hibernate相结合的简称。框架说白了就是Java工作者多年以来总结出的一些开发标准10。让开发者可以以成功的经验模式来开发自已的系统,一般使用框架的好处是: 在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底层的API; 经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性,同时清晰的结构使得其他人可以更容易加入项目; 一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践; 采用成功的框架的代码比自己的代码容易测试。 J2EE本身提供了一些框架。比如说,Enterprise Java-Beans (EJB) container或者 Servlet engine。但是这些框架一般在中小工程中都不会使用,会让开发者把大量的时间浪费在开发框架上11。而现在比较流行开源框架,主要是Struts,Hibernate,Spring等。其中表示层用Struts6,业务逻辑层用Spring7,数据访问层用Hibernate8。Struts是在原有MVC模式基础上实现在代码分离等功能 12;而hibernate可以把关系型数据库转换成在JAVA中的面向对象来使用。从而让开发者在开发时不需要直接写SQL语句,比如“database.getName()”就可以直接把数据库中的用户名取出来13;J2EE框架被大规模地运用到项目中,而项目总要负责这些框架以及自己业务代码的连接,使之真正融合到一起。Spring就是专注于这个问题的,它和Hibernate融合的很好。 这三种框架在一起并不冲突,所以现在最常用的框架就是Struts+Spring+Hibernate。就像盖房子一样,先把框架搭好,进而基于其编写的代码就很规范。2.1.2 SSH架构图2.1 Struts、Spring和Hibernate框架组装大多数不复杂的Web应用都能被分成至少四个各负其责的层次14。这些层次是:表示层(presentation)、持久层(persistence)、业务层(business)、领域模型层(domain model)。每层在应用程序中都有明确的责任,不应该和其它层混淆功能。每一应用层应该彼此独立但要给他们之间放一个通讯接口。让开发者从审视各个层开始,讨论这些层应该提供什么和不应该提供什么15。1) 表现层在一个典型的Web应用的一端是表现层。很多Java开发者也理解Struts所提供的。但大多数时候,他们把像业务逻辑之类的耦合的代码放进了org.apache.struts.Action16。所以,让开发者在像Struts这样一个框架应该提供什么上取得一致意见。这儿是Struts负责的: 为用户管理请求和响应; 提供一个控制器代理调用业务逻辑和其它上层处理; 处理从其它层掷出给一个Struts Action的异常; 为显示提供一个模型; 执行用户接口验证。2) 业务层在一个典型的Web应用程序的中间的组件是业务层或服务层。从编码的视角来看,这个服务层是最容易被忽视的一层。不难在用户接口层或者持久层里找到散布在其中的这种类型的代码,但是这不是正确的地方,因为这导致了应用程序的紧耦合,这样一来,随着时间推移代码将很难维护17。幸好,针对这一问题有好几种Frameworks存在。在这个领域两个最流行的框架是Spring和PicoContainer,它们叫作微容器,你可以不费力不费神的把你的对象连在一起。所有这些框架都工作在一个简单的叫作“依赖注入”(也通称“控制反转”)的概念上。该论文将着眼于Spring的为指定的配置参数通过bean属性的setter注入的使用。Spring也提供了一个构建器注入的复杂形式作为setter注入的一个替代。对象们被一个简单的XML文件连在一起,这个XML文件含有到像事务管理器、对象工厂、包含业务逻辑的服务对象和数据存取对象这些对象的引用。业务层应该负责下面这些事情18: 管理应用程序的业务逻辑和业务验证; 管理事务; 预留和其它层交互的接口; 管理业务层对象之间的依赖; 增加在表现层和持久层之间的灵活性,使它们互不直接通讯; 从表现层中提供一个上下文给业务层获得业务服务; 管理从业务逻辑到持久层的实现。3) 持久层在典型web应用的另一端是持久层。这通常是使事情迅速失控的地方。开发者低估了构建他们自己的持久层框架的挑战性。一般来说,机构内部自己写的持久层不仅需要大量的开发时间,而且还经常缺少功能和变得难以控制。有几个开源的“对象关系映射”框架非常成功的解决了这些问题。尤其是,Hibernate框架为java提供了“对象关系持久化”机制和查询服务。Hibernate对那些已经熟悉了SQL和JDBC API的Java开发者有一个适中的学习曲线。Hibernate持久对象是基于简单旧式的Java对象和Java集合。此外,使用Hibernate并不妨碍你正在使用的IDE19。Hibernate本质上还是包装了JDBC来进行数据库操作。由于Hibernate对JDBC的调用进行了优化,并且尽可能的使用最优化的、最高效的JDBC调用,所以性能相当令人满意。Hibernate是轻量级的封装,避免了过多复杂的功能,减轻了程序员的负担。同时,它也是一个开源的代码,提供开放的API,用户可以自行扩充其功能。Hibernate在大多数主流J2EE应用服务器的受管理环境中都可以良好运作,Hibernate也可以作为独立应用程序运行20。Hibernate的精髓是持久层实现模式。它完全是针对对象的持久化,即把一个普通的Java对象映射到关系数据库中。面向对象设计中的继承与多态机制在Hibernate里也得到了支持,在数据查询中,它支持动态Query,并提供对十六种数据库语言的支持,它沿用传统数据库的事务模型21,使程序员不必为新的事务模型大伤脑筋22。持久层应该负责下面这些事情: 查询相关的信息成为对象。Hibernate通过一种叫作HQL的面向对象的查询语言或者使用条件表达式API来做这个事情。 HQL非常类似于SQL,只是把SQL里的table和columns用Object和它的fields代替。还有一些新的专用的HQL语言成分要学,不过,它们容易理解而且文档做得好。HQL是一种使用来查询对象的自然语言,花很小的代价就能学习它。 保存、更新、删除储存在数据库中的信息。 像Hibernate这样的高级“对象关系”映射框架提供对大多数主流SQL数据库的支持,它们支持“父/子”关系、事务处理、继承和多态23。4) 领域模型层领域对象层由那些代表现实世界中的业务对象的对象们组成,比如:一份订单、订单项、产品等等。这个层让开发者停止建立和维护不必要的数据传输对象(或者叫作DTOs),来匹配他们的领域对象。例如,Hibernate允许你把数据库信息读进领域对象的一个对象图,这样你可以在连接断开的情况下把这些数据显示到UI层。那些对象也能被更新和送回到持久层并在数据库里更新。而且,你不必把对象转化成DTOs,因为DTOs在不同的应用层间移动,可能在转换中丢失24。这个模型使得Java开发者自然地以一种面向对象的风格和对象打交道,没有附加的编码。2.2 ExtJS技术2.2.1 ExtJS概述ExtJS最开始基于YUI技术,YUI是Yahoo! UI Library的简称,是一个开源的JavaScript库,与Ajax、DHTML和DOM等技术一起使用可以用于创建富有交互性的Web应用,它还包含丰富的CSS资源。 ExtJS由开发人员Jack Slocum开发,通过参考Java Swing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,还是数据解析上的异常处理,都可算是一款不可多得的JavaScript客户端技术的精品。Ext最初是YUI的一个扩展,然而,它现在也可以扩展自JQuery和Prototype。自1.1版开始,Ext已经可以独立运行,不需要依赖于那些外部库,虽然它仍然是可被集成的一个选项。现在Ext 2.0版可以使用许多不同的基础库,例如YUI、JQuery和Prototype,或者是可以独立的运行。ExtJS是JavaScript面组件(component)的开发框架,其内置许多优秀的可复用的组件框架,其友好的界面风格,使得开发人员不要美工的支持也能开发出,丰富的页面。另外ExtJS加强了对Ajax的支持,许多优秀的组件,比如Reader,Proxy使开发人员可以摆脱Ajax异步的支持,从而专注在功能设计。 ExtJS是一个很好的Ajax框架,可以用来开发富有华丽外观的富客户端应用,主要是企业信息化软件,网站后台等,能使B/S应用更加具有活力。ExtJS是一个用JavaScript编写,与后台技术无关的前端Ajax框架25。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用程序中。2.2.2 ExtJS优势ExtJS是一种用于开发富客户端Web应用程序的JavaScript技术,它不需要为客户端安装任何插件就可以实现丰富多彩的界面效果,是进行富客户端开发的理想选择之一。ExtJS的主要功能包括: 对标准信息提示框的扩展; 对标准表单组件的扩展; 支持面板及各种布局方式; 提供了大量的工具类和工具方法; 提供了增强的事件机制; 提供了对Ajax功能的支持; 具有结构完整的数据模型; 提供了灵活易用的模板功能; 提供了美观实用的各种组件(其中的代表是表格组件Grid和树型组件Tree)。ExtJS是一个纯前台的JavaScript框架,他没有提供后台部分的实现,但这并不是说ExtJS与后台技术的结合非常困难,恰恰相反,ExtJS可以与各种后台技术进行结合,前后台之间通过XML或者JSON实现数据传递,目前后台生成XML或者JSON的技术已经非常成熟,因此只要对后台进行很小的修改就可以将ExtJS应用于现有项目。ExtJS最大的优势在于它将Web应用程序的操作方式向传统桌面应用程序的操作方式进行转化甚至消除了这种差异,从根本上改善了用户的使用体验,这是ExtJS应用前景广阔的主要原因;其次使用ExtJS对浏览器没有任何要求可以说是一种绿色的富客户端实现方式,这是它应用前景广阔的第二个原因;另外ExtJS提供的各种组件可以用更加标准的方式展示数据,进而降低了开发难度,这可以说是它应用前景广阔的第三点原因。3 系统分析与设计3.1 系统概述该系统是一个员工考勤管理系统,该系统通过记录员工每天的出勤记录以及请假记录,达到管理员工出勤以及为财务部门核算工资提供统计数据。因此该系统的目的是管理以及反映员工的出勤,为财务部门生成员工在计薪周期内的出勤统计。系统的输入有员工刷卡数据,员工请假数据。该系统暂不支持对员工加班信息的统计,早班/夜班的异动,所有员工只有白班。也不支持对倒班的记录。系统baseinfo表是基本表,AMS通过同步公司LDAP服务器获得,该表储存了公司所有员工的基本信息,所以AMS不能编辑。前台“Personal Message” 页面显示员工的基本信息,该信息通过查询数据库baseinfo表获得。AMS事件:1) 刷卡事件:刷卡记录分别记录上午和下午两个刷卡记录,上午最早的一次刷卡,下午最晚的一次刷卡。上午和下午以中午1点为界限。2) 请假事件:员工在每天只能拥有一个请假单,AMS在保存请假单时会进行判断。AMS数据统计背景:财务部门把每月的第一日到最后一日作为一个计薪周期,在计薪周期结束之后的10天,财务部门根据AMS的统计数据核算员工上个计薪周期的工资所得。因此员工和管理员必须在计薪周期结束后的10天完成请假单审核工作。在AMS的“Attand details”, “Request for leaving” 和“Manager” 页面都是以计薪周期为功能单位。比如,“Attand details” 页面中,员工在1号到10号查询到的是当前计薪周期的数据,也就是上月第一天到最后一天的异常出勤数据。系统从功能上划分了两大模块:考勤/请假管理,员工计薪周期出勤/请假统计;为此系统定义了Employee,Manager两种角色。该系统主要有两大功能:1) 生成出勤统计信息,以供会计核算工资;2) 员工可以查询自己的刷卡记录,提交/查询请假单。3.1.1 角色定义系统简单定义了三个大角色:Employee,Manager和HR。1) 普通员工(Employee):登录时选择员工。普通员工拥有的功能。 查阅本人考勤以及统计信息; 对本人考勤持有异议,可以进行申诉。申诉后由经理予以审核(确认或者拒绝); 添加/修改年假、事假以及病假请假单。2) 员工管理员(Manager):登录时选择管理员的。他们登录后会多出一个审核员工请假数据的页面。 查阅本人考勤; 对本人考勤持有异议,可以进行申诉。系统暂时没有设置更高的管理员,在AMS中管理员可以审核自己的申诉; 添加/修改年假,事假或者病假请假单; 审核员工的请假记录。3) 财务部门:系统中没有设置该角色,AMS的“Attendance Statistic” 页面统计生成员工在计薪周期内的出勤以及请假详细记录,以及计薪天数。3.1.2 考勤管理考勤管理模块主要是对考勤记录的管理,主要包括:1) 考勤记录的导入:从门禁卡系统的数据库中读入数据,进行处理后保存到系统数据库,该部分在AMS没有实现,AMS通过直接往数据库插入数据模拟。2) 考勤记录的查询:系统设计“Time Sheet” 页面, 员工在该页中输入查询开始日期和结束日期,可以查询到员工在每一个正常工作日的刷卡记录。3) 考勤记录的申诉:系统设计了“Attandance Details” 页面,该页面会列出员工在该计薪周期内的所有异常出勤记录,在该页面员工可以对异常出勤进行申诉,添加申诉报告。4) 考勤记录的确认:系统设计了“Manager” 页面和“Holiday” 页面。“Manager”页面,只有管理员登录时才显示。为了方便管理员确认考勤记录,在右边添加一个导航树,在该导航树上列出所有部门员工,管理员双击员工自动打开“Manager”页面并载入该员工在该计薪周期内的所有请假和申诉记录。管理员可以根据员工提供的请假和申诉请求,予以通过审核和不通过审核。对于请假单和申诉,在管理员为处理之前是“未审核”状态,管理员可将其审核通过和不通过。如图3.1所示。在“Holiday” 页面将统计出员工在全年的病假,事假和年假的统计。5) 考勤记录汇总:系统设计了“Attandence Statistic”页面和“Holiday” 页面。“Attandance Statistic” 页面显示员工在过去12个月内的出勤统计信息,财务部门可以在该页中获得计薪周期的出勤统计输出,以供核算工资。在“Holiday” 页面中统计出员工在该月的详细出勤统计。如图3.2所示。图3.1 考勤管理模块流程图图3.2 考勤记录汇总流程图3.1.3 请假管理系统只支持如下请假类型:申诉、病假、事假和年假。一天只能有一个请假单。月底必须要提交该月的所有请假单,否则视为无效。可以支持跨月的请假。默认没有跨年的请假单,如果请假单确实跨年则在生成statistics时,系统自动重新生成新请假单。所有请假数据在跨年以后自动重置(如事假,病假,年假)。请假管理模块设计了两个页面:“Leave Requst” 页面和“Manager” 页面,主要是对请假的管理,如图3.3所示,它包括:在“Leave Request” 页面中员工可以查看,添加和编辑请假单,新添加的请假单是“未审核”状态,但管理员(Manager)处理之后会被置成通过或不通过状态。请假单在管理员(Manager)处理之后员工只能查看,不能编辑或者删除。在“Manager” 页面中管理员(Manager)可以对员工的请假单进行审核。为此AMS在右侧添加了一个导航树,该树将列出所有员工,管理员(Manager)双击员工可在“Manager” 页面中列出员工在该计薪周期的所有请假信息。图3.3 请假管理模块流程图3.2 系统设计系统采用SSH框架。表示层用Struts,业务逻辑层用Spring,数据访问层用Hibernate。系统在表示层(展示层)得到用户的操作数据并将这些数据提交到逻辑层,逻辑层得到数据后则会进行分析和处理,如有必要则调用数据访问层的相关方法取得数据,数据访问层得到相关的数据集后返回给逻辑层,逻辑层对数据集进行处理将有用的信息返回给展示层,展示层解析逻辑层响应的数据,在适当的地方呈现给用户。如图3.4所示。图3.4 展示层、逻辑层和数据访问层相互关系3.2.1 前台设计系统前台分为登录页面和功能页面,用户(employee,manager)可在登录页面验证自己信息,功能页面根据登录页面的验证信息载入功能模块。登录页面:用户提供用户名,密码以及身份(employee或者manager)。在登录页面验证之后的用户,AMS的验证通过httpsession进行自动登录,httpsession过期时间设置为10分钟,如果10钟内没有与服务器的交互,AMS将提示用户重新登录。功能页面包括七个子页面和一个导航树,7个子页面分别是:Personal Message,Time Sheet,Attandance Details,Statistics,Leave Request,Holiday和Manager。1) Personal Message:该页面显示当前登录用用户的基本信息,该表的信息通过查询baseinfo数据库表直接获得。2) Time Sheet:员工在该页输入查询的起始和结束时间,该页将展示所有查询区间的出勤记录。该页支持分页,每页30条记录。该页设置3个列:“date”、“morning”、“afternoon”。“date”显示出勤日期,“morning”显示改日上午刷卡记录, “afternoon”显示改日的下午刷卡记录3) Attand Details:该页显示员工在该计薪周期所有异常出勤记录,由于员工在一天只能拥有一张请假单,该页也只支持单一选择。员工点击异常记录,点击“申诉”按钮,系统弹出添加请假单Panel。在添加请假单Panel中,员工输入申诉信息。该页包含6个列:姓名、日期、异常类型、刷卡数据、请假类型、状态。其中“请假类型”指该异常日的请假单类型,因员工每日只能拥有一张请假单,因此只有该项为空时,“申诉”按钮才能激活。对于状态,新添加的请假单为“未确认”,管理员(Manager)处理之后的请假单可以是“通过”或者“不通过”。4) Statistic:该页列出员工在过去12个计薪周期的统计数据。该页包括11个列:月份、应上班天数、正常天数、迟到天数、早退天数、旷工天数、申诉天数、事假天数、病假天数、年假天数和计薪天数。5) Request for leave:该页面列出员工在计薪周期内的所有请假单。员工不能编辑或者删除经理处理之后的请假单。员工点击单一请假单,点击“编辑”按钮可以编辑该请假单。员工可以一次删除多个请假单。员工单击“添加”按钮可以添加请假单。该页包括8个列:请假类型、开始日期、结束日期、开始时间、结束时间、请假人、审核人和状态。6) Holiday:该页有两个表格,一个是员工本月的出勤统计,一个是员工在全年的请假统计(不包括申诉)。 统计:根据员工在该月(非计薪周期)的每天刷卡和请假记录生成当月到改日的统计信息。 请假:该panel统计出员工在全年的请假信息(不包括申诉),该panel包括6个列:员工姓名、本年年假标准、事假天数、病假天数、年假天数、剩余年假、7) Inspect leaving:管理员(Manager)在该页中审核员工的请假单。双击导航树中的员工,将载入员工在计薪周期的所有请假记录,该页支持分页,每页30个记录,管理员可以多选点击“通过”或者“不通过”按钮审核请假单。该页包含7个列:请假类型、开始日期、结束日期、开始时间、结束时间和状态。3.2.2 表示层设计表示层主要使用ExtJS进行控制,包括数据的读取以及界面的美工和CSS定义。展示层主要是JSP页面,并且使用模板来对页面的风格进行统一。Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的Web应用程序的开发。在本系统里,Struts只要负责与用户交互,包括:接受用户的请求,把处理结果返回给用户;而页面交给了ExtJS来完成,使得他们之间的分工更明确。如图3.5所示。 现在MyEclipse 6.0已经嵌入了Struts,Spring和Hibernate插件了,所以目前的工作就比较轻松了,主要是将相应的包引入进来就可以了:右键点击相应的Project,选择MyEclipse下的“Add Struts Capabilities”,完成接下来的步骤就顺利引入了Struts相应的包,并且可以进行相应的一些页面跳转的控制。当服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。图3.5 表示层的设计3.2.3 逻辑层设计逻辑层用Spring来实现对页面请求的数据进行操作和处理,返回给页面相关的响应的数据。如图3.6所示。使用Spring中的依赖注入/控制反转,可以定义任何接口,然后实现接口里面的方法,通过Spring的配置文件把接口注入到任何地方,前提是引用的必须是接口,在引用的地方必须有接口定义以及getter方法,不过可以把这个接口当作类似JavaBean的一个属性一样来使用,JavaBean都有getter和setter方法的;另外也可以使用Spring的事物代理来完成一些工作。通过定义好的接口,开发者可以直接通过接口来接收页面请求的数据,并对其进行处理,如果有必要,那么再交给数据访问层;而从数据访问层返回来的数据集,在这里也要进行相应的处理再返回给表示层。图3.6 逻辑层的设计3.2.4 数据访问层设计数据访问层用Hibernate来实现,系统中的数据访问层主要用户与数据库相关的操作,包括添加、修改、删除、查询等操作。如图3.7所示。数据访问层采用Hibernate把数据库中的表与系统中定义的持久类进行映射,在数据使用的时候就可以直接使用持久类中的数据。如果系统需要对数据库进行操作时,逻辑层调用数据访问层相对应的DAO类,根据逻辑层的相关参数对数据库进行相应的操作,操作成功后则返回操作信息或是相关数据集。图3.7 数据访问层的设计3.2.5 数据字典系统的数据字典如图3.8所示,它是以User为中心,与Role,Department,Middle,Record,Holiday,Leave等模块关联形成的。图3.8 数字字典其中对应的User表的视图如表3.1所示:表3.1 User表Field NameData TypeData LengthPrimary KeyForeign KeyRestriction(NULL)DescriptionIDINT 8YNONLY(N)用户IDMIDDLE_IDINT 8NYONLY(N)角色IDREC_IDINT 8NYONLY(N)时间片IDHOLIDAY_IDINT 8NYONLY(N)假期IDUSER_NAMEVARCHAR 50NNN用户名USER_PWDVARCHAR 50NNN用户密码USER _SEXVARCHAR 10NNY性别USER _ IDENTIFIERVARCHAR 30NNY身份证号USE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论