公司考勤管理系统设计_第1页
公司考勤管理系统设计_第2页
公司考勤管理系统设计_第3页
公司考勤管理系统设计_第4页
公司考勤管理系统设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

绪论1.1课题背景、目的及意义随着计算机技术的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。同时,以计算机为基础的各种软件也渐渐走入规模不同的各种企业单位中。企业在对竞争日趋强烈的现代社会在不断提高自身产品质量的同时,对员工的要求也逐渐提高,考勤管理也就成为了一个大众化的课题。公司考勤管理系统是为了解决员工考勤管理而设计的,目的是建立一个能够初步实现公司考勤管理系统的智能化管理,提高考勤管理效率,工作人员能够在各个岗位上的工作状态得到及时的反馈,而系统所需的工作人员的数量少,效率高。公司考勤管理系统是一个企业单位不可缺少的一部分,它的内容对于企业的决策者和管理者来说都是至关重要的,因此,公司考勤管理系统应该能够为用户提供充足的人事管理的信息和快捷的管理查询手段,但一直以来人们使用传统的人工方式管理员工的上下班等信息,这种管理方式存在着许多缺点,诸如效率低,保密性差等,而且时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。作为计算机应用的一部分,使用计算机对企业考勤信息进行管理,具有人工管理无法比拟的优点,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,可减少更多的人力物力,这些都能够极大地提高企业的考勤管理效率,也是企业考勤管理科学化、正规化,与世界接轨的重要条件。因此,开发一个公司考勤管理系统是很有必要的,具有其特有的技术意义和管理意义。1.2国内现状分析长期以来,我国众多的企业都是采用传统的手工方式记录企业员工每日的出勤情况。这种方式繁琐易错,准确性、透明度、实时性差,受人为因素影响过大,增加了企业的人力资源成本。同时使用传统人工记录考勤管理容易出现疏漏,甚至可能存在考勤监管人员因人情导致考勤不平等的情况,造成企业员工存在侥幸心理,无法解决代考、脱岗的问题,不利于企业的人员管理。随着信息化社会的到来,国民素质的相应提高,企业员工的信息素养普遍增强,为企业合理的运用考勤管理系统提供了有力的人员保障。从现在出现的一些公司考勤管理系统分析,可以把公司考勤管理系统从管理功能上大致分为两种:第一种是门禁安全系统。门禁安全管理系统主要是解决重要部门出入口实现安全防范管理的有效措施,集微机自动识别技术和现代安全管理措施为一体。它能够自动识别出入的人员身份,记录人员出入时间等,但一般没有综合的考勤分析功能。第二种是综合考勤管理系统。这种考勤管理系统主要针对公司员工的上下班考勤记录等相关情况的管理。一般为企业管理部门使用,掌握并管理企业的员工出勤动态,一般包括考勤记录和考勤分析两大总体功能。不但能够识别进入企业的职员的身份,还具备企业员工请假、休假、加班等相关出勤情况的记录和分析汇总功能,根据系统制定的考勤规则,自动分析出考勤结果。1.3论文组织结构本论文主要分为六章。第一章为绪论,主要论述整个公司考勤系统的产生背景及产生的目的和意义,以及国内现状。第二章为开发技术和工具的介绍,主要论述整个考勤系统在开发过程中用到的技术和工具。第三章为需求分析,主要论述从系统的真实需求出发,对系统的功能性和非功能性需求的描述,以及遇到的问题和解决方案。第四章为系统设计,主要划分系统的主要功能,以及系统的功能和数据流程图,描述建立的数据库表结构及相关属性。第五章为系统实现,主要是对系统的6大主要功能的详细描述和实现过程,以及一些界面截图。第六章为总结,主要是对自己在完成毕业设计的过程中的工作成果及缺陷的总结。2开发技术及工具介绍2.1B/S模式B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层(3-tier)结构。一个三层架构的应用程序由三部分组成,这三部分各自分布在网络中的不同地方。这三个部分分别是:工作站或表示层接口、事务逻辑、数据库以及与其相关的程序设计。事务逻辑处在局域网(LAN)服务器或其他共享主机上,它作为响应工作站所发出客户请求的服务器,而相对于处于大型机的第三层,它是作为客户端,并且决定需要什么数据以及数据存储在哪里。第三层包括数据库以及处理读写以及访问数据库的程序。然而应用程序的设计可能比这个架构要复杂,对于大型程序来说,这个三层模式是一种比较简便的考虑方法。这种应用程序的设计使用浏览器/服务器模式,各层可以同时开发,并且可以由不同的成员组用不同的语言来开发。因为各个层次的开发不会影响其他层次,所以这种模型对于进一步开发软件是很方便的。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在Java这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。此技术超越了传统的“客户机/服务器”两层结构,采用了三层体系结构:用户界面层/事务层/数据库层。因此Web结构有着更好的安全性。在用户机上不需要安装任何应用程序,应用程序可以安装在事务层所在的计算机上,试题存放在数据库服务器上(事务层和数据库可以是同一台机器)。2.2JAVA简介Java环境可用来开发能在任何计算平台上运行的应用软件。它实际上是一种非常基本且结构紧凑的技术,而它对WorldWideWeb以及商业的总体影响已可同电子表格对PC机的影响相比拟。Java已用动态的交互应用软件使Web栩栩如生。它使开发人员具有“编写一次到处运行TM”的巨大能力。而且,借助其JavaAPI及其编程语言上的Java虚拟机,它已产生一种分布信息的崭新模式,这种模式叫做Java企业计算。正在帮助各企业以各种不同的方法取得竞争优势,网管和控制已大大简化。软件分配基本上是免费的,而且立即可实现,并且占有成本大幅度降低,信息和应用软件到处可存取。Java建立在简单的前提基础上,即所有微处理器都应讲同一种语言——所有内部采用芯片的产品都应能一起工作,无缝而方便地共享信息。它已经改变企业和个人同Internet打交道的方式。现在,它正在对消费类产品产生明显的影响,而且从总体上更加深刻地影响企业计算。借助Java,可以自由自在地使用已拥有的硬件和软件。这是因为Java是独立于平台的,使应用软件在便携式计算机、信息亭、电视、蜂窝电话和其他大量设备上运行。全世界的公司都已发现Java数不胜数的应用。所有应用可从其无可比拟的能力,即提高可靠性、安全性和简化各种不同计算产品和环境的能力中受益匪浅,而且节省的时间和费用十分可观。Java无处不在。它已拥有几百万个用户,其发展速度要快于在它以前的其他任何一种计算机产品。它可位于任何地方,而且能到处运行。Java正在迅速被用做传播信息的事实上标准,这是因为它既可给企业,也可给最终用户带来数不清的好处。Java远不止是一种编程语言,它是企业内外的完整计算环境,而且万事齐备,从开发工具、操作系统、服务器软件一直到网络管理工具、支持、培训、咨询和集成服务,一应俱全。2.3SSH介绍2.3.1数据访问框架Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.3.2控制层框架Struts2框架作为Struts1.X框架的替代技术,相对Struts1.X来说,有着本质上的改变,Struts2框架是从WebWork框架发展而来的。Struts1.X已经成为JavaWeb开发中应用最广泛的MVC框架,被广大的程序员所接受。随着Web技术的发展,Struts1.X越来越难以适应,主要体现在支持视图技术单一、难于测试性、庞大的配置文件和大量的ActionForm类,给项目开发的管理维护带来了困难。

Struts2框架技术整合了Struts1.X和WebWork的优点,Struts2框架最大的特点就是其简单性,引入了OGNL表达式和值栈的概念,可以使开发者使用简单的代码实现复杂的数据访问;Action实现类就是一个标准的Java类(POJO),这使得测试工作变得简单。同时Struts2框架取消了ActionForm,支持多种返回类型和Ajax技术,简化了同其他技术的整合。2.3.3管理层框架Spring是一个开源的轻量级JavaSE(Java标准版本)/JavaEE(Java企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且要低耦合、高内聚。Spring框架除了帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还能帮用户管理最头疼的数据库事务,本身提供了一套简单的JDBC访问实现,提供与第三方数据访问框架集成(如Hibernate、JPA),与各种JavaEE技术整合(如JavaMail、任务调度等等),提供一套自己的web层框架SpringMVC、而且还能非常简单的与第三方web框架集成。Spring是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力,从而使用户可以更自由的选择到底使用什么技术进行开发。而且不管是JAVASE(C/S架构)应用程序还是JAVAEE(B/S架构)应用程序都可以使用这个平台进行开发。2.4TOMCAT应用服务器Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,用户只需将自己的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。用户在浏览器中访问这个应用的JSP时,通常第一次会很慢,因为Tomcat要将JSP转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于FTP,用户可以在远程通过Web部署和撤销应用。当然本地也可以。Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理JSP和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。另外,Tomcat提供Realm支持。Realm类似于Unix里面的group.在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供三种Realm:1、JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证;2、JNDIRealm,用户信息存在基于LDAP的服务器里,通过JNDI获取用户信息;3、MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm。通过Realm可以方便地对访问某个应用的用户进行验证。基于Tomcat的开发其实主要是JSP和Servlet的开发,开发JSP和Servlet非常简单,可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可。这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make。用户需要写一个build.xml文件,然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,只需在xml中写很少的东西就可以将其编译并打包成WAR。事实上,在很多应用服务器的发布中都包含了Ant。另外,在JSP1.2中,可以利用标签库实现Java代码与Html文件的分离,使JSP的维护更方便。2.5ORACLE11GORACLE11G引入了连接存储池(connectionpolling)和多路复用(multiplexing)机制,提供了对大型对象的支持。当需要支持一些特殊数据类型时,用户可以创建软件插件(catridge)来实现。ORACLE11G采用了高级网络技术,提高共享池和连接管理器来提高系统的可扩性,容量可从几GB到几百TB字节,可允许10万用户同时并行访问,ORACLE的数据库中每个表可以容纳1000列,能满足数据库及数据仓库应用的需要。(1)系统的可用性和易用性ORACLE11G提供了灵活多样的数据分区功能,一个分区可以是一个大型表,也可以是索引易于管理的小块,可以根据数据的取值分区。有效地提高了系统操作能力及数据可用性,减少I/O瓶颈。ORACLE11G还对并行处理进行了改进,在位图索引,查询,排序,连接和一般索引扫描等操作引入并行处理,提高了单个查询的并行度。ORACLE11G通过并行服务器(ParallelServerOption)来提高系统的可用性。(2)系统的可管理性和数据安全功能ORACLE11G提供了自动备份和恢复功能,改进了对大规模和更加细化的分布式操作系统的支持,如加强了SQL操作复制的并行性。为了帮助客户有效地管理整个数据库和应用系统,ORACLE还提供了企业管理系统(ORACLEEnterpriseManager),数据库管理员可以从一个集中控制台拖放式图形用户界面管理ORACLE的系统环境。ORACLE11G通过安全服务器中提供的安全服务,加强了ORACLEWebServer中原有的用户验证和用户管理。3需求分析3.1任务概述公司考勤管理系统主要实现员工管理(系统管理包含在员工管理中)、部门管理、公告管理、个人考勤、考勤管理、请假管理等功能,充分利用计算机网络技术,改变传统的操作方式进行管理,实现了网络化管理模式。3.2功能需求概述3.2.1用户类别登录系统的身份定为两种,一是管理员(企业领导),二是普通员工,只有被授权的用户才可以使用本系统的资源。3.2.2权限管理系统需要经过有效的身份验证才可以登录。用户的身份不同,使用的系统资源也不同。普通员工可以进行个人考勤查询,同时还可以有系统公告的管理功能;管理员(企业领导)可添加员工信息、查询修改管理员信息、进行请假管理、考勤管理,可以对员工考勤进行查询操作,可以对系统发布公告等信息,可控制整个系统的登录功能(控制系统)的登录,拥有整个系统的全部使用权限。3.2.3具体功能需求(1)部门管理:领导对本企业的部门进行添加、查询的功能。(2)公告编辑:领导对本系统中的所用子级用户进行发布公告及编辑。(3)个人考勤:用户登录系统后,可以考勤(上班,下班)。(4)请假管理:管理员可以对员工的请假信息进行操作(准请假和不准请假)。(5)考勤管理:管理员可以对员工的全部考勤进行查询的功能操作,但普通员工只能对自己的考勤有查询的功能。(6)员工管理:管理员对普通员工有查询与添加的操作功能。领导可对普通员工用户进行控制,看是否可以登录。3.3非功能需求概述为了美观及操作便捷,本系统采用简洁大方的界面设计,首先是登陆界面的设计,主要为填写用户名及密码。其次是操作界面,主要的功能操作体现为窗口右侧的系统功能菜单,此菜单中的功能可通过用户需求,将其中的子功能展开和收缩,便于用户操作及页面美观。然后是各个功能页面的设计,功能操作页面都采用简单易操作的方案,将页面尽量简化及美观。查看页面主要采用简介的表格显示方式,而添加页面主要采用下拉框和文本框等显示方式。整体界面设计都以简单美观便捷为主要目的。3.4问题分析公司考勤管理系统拟采用B/S模式,三层结构设计。涉及静(动)态网页编写(熟悉HTML、CSS、JavaScript)、程序设计(JSP或其它语言基础)、数据库应用(Oracle11g的应用、SQL语言、调优)、数据库设计、软件工程及软件测试,用户界面设计、美化、文档编写(软件开发计划、用户手册等设计内容都要形成文字)等各方面知识;以及团队组织、项目管理,帮助文档的编写、部分的测试等。3.5方案选择开发公司考勤管理系统,提出以下解决方案:采用B/S模式,选择Oracle11g作为后台数据库,选择JAVA、JSP、JavaScript、Html作为应用程序开发工具,运用Tomcat服务器技术,整个系统完全基于Browser/Server模式进行设计。B/S模式有以下优点:(1)开发成本及维护成本降低由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。(2)良好的安全性能防火墙技术可以保证后台数据库的安全性,所有客户端端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。因此系统的架构就采用了B/S设计模式。3.6运行环境系统对运行的软件环境的要求:(1)服务器端操作系统:Windows7网络协议:TCP/IPweb服务器:InternetInformationServer5.0/PersonalWebServer数据库:Oracle11g浏览器:InternetExplorer5.0以上(2)客户端操作系统:Windows7以上网络协议:TCP/IP数据库:Oracle11g浏览器:InternetExplorer5.0以上4系统设计4.1功能划分4.1.1系统结构设计总体设计主要是指在系统分析的基础上,对整个系统的划分(子系统)、机器设备(包括软、硬设备)的配置、数据的存贮规律以及整个系统实现规划等方面进行合理的安排。系统设计工作应该自顶向下地进行。系统设计的工作复杂又细致,总体设计阶段需要进行系统模块结构设计,要将一个大系统分解成不同层次、多个模块组成的系统,在详细设计阶段要在模块结构设计的基础上,给出每个模块实现方法的细节,并对模块的输入、输出和处理过程作详细描述,以便在系统实施阶段进行程序设计时,可以把这个描述直接“翻译”成用某种程序设计语言书写的程序。4.1.2系统功能模块模块化是指解决一个复杂问题时自上向下逐层把系统划分成若干个模块的过程。每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。系统的模块划分不能是任意的,应尽量保持其独立性。降低系统的复杂性,提高可读性、可维护性。也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少,而且接口简单,即尽量做到提高模块的独立,为设计高质量的系统结构奠定基础。系统模块结构设计的任务是划分子系统,然后确定子系统的模块结构,并画出模块结构图。在这个过程中必须考虑以下几个问题:(1)如何将一个系统划分成多个子系统。(2)每个子系统如何划分成多个模块。(3)如何确定子系统之间、模块之间传送的数据及其调用关系。(4)如何评价并改进模块结构的质量。该方法适合于软件系统的总体设计和详细设计,特别是将一个复杂的系统转换成模块化结构系统,该方法具有它的优势。在使用过程中可将结构化设计方法与结构化分析(SA)方法及编程阶段的结构化程序设计方法(SP)前后衔接起来。系统功能模块化的优点:(1)系统功能模块划分清晰,区别明显,易于操作。(2)操作界面友好,简单易懂适合不同层次的操作人员。(3)子系统之间的数据交换操作简单、快捷。根据该系统的需求分析,设计可实现的模块组织结构,如图4-1所示。图4-1系统功能图4.2指导思想系统功能设计本着从用户角度出发的原则,要求实用,且符合用户提出的合理需求。系统设计在不违反系统整体性的基础上,可根据用户的需求进行二次开发,不断完善系统功能,便于系统的不断升级。4.2.1系统流程图图4-2系统流程图4.2.2数据流程图图4-3数据流程图4.2.3系统E-R图数据实体对象包括:员工信息实体、部门信息实体、公告信息实体、出勤信息实体、请假信息实体,各个实体拥有各自不同的属性,并且它们之间拥有相应的关系,我们可以用实体联系图表示,如图4-4考勤实体关系E-R图所示。图4-4考勤系统实体及实体间关系E-R图4.3数据库设计员工信息表存储员工的编号、员工姓名、员工登录系统的密码、员工电话、性别、部门编号(外键)、权限标示符(0禁止登录,1管理员,2是普通员工)、备注(用来标注员工的特殊情况)本数据表和后台的hkj.po.Person类相映射,表中字段说明如表4-1所示。表4-1员工信息表(person)列名类型长度说明pidnumber20人员信息表的主键pnamevarchar220员工姓名pwdvarchar220员工登录系统的密码phonenumber13员工电话sexnumber1性别didnumber10部门编号(外键)isgrantnumber2权限标示符(0禁止登录,1管理员,2是普通员工)remarkvarchar2100备注公司部门信息表,存储公司部门的部门编号、部门名、备注。本表和后台的hkj.po.Dept类映射,表中的字段如表4-2所示。表4-2部门信息表(dept)列名类型长度说明didnumber10部门信息表的主键dnamevarchar220部门名remarkvarchar2100备注公司公告信息表,存储公告的编号、公告标题、公告内容、发公告人编号(人员表外键)、备注。本表在后台与hkj.po.News类映射,表中字段如表4-3所示。表4-3公告表(news)列名类型长度说明nidnumber5公告信息表的主键nnamevarchar250公告标题newsvarchar21000内容pidnumber20发公告人员编号(人员表外键)remarkvarchar2100备注公司员工出勤信息表,存储员工每天出勤出勤信息编号、出勤人编号、上午上班签到时间、上午下班签到时间、下午上班签到时间、下午下班签到时间、备注(备注标记员工签到情况,若只是上午上班签到,没有上午下班签到,则算上午没签到,若上午满勤。则标记为1,算半天,下午同理,全天满勤标记2)。本表与后台hkj.po.Chunqi类映射,表中字段如表4-4所示。表4-4出勤表(chuqin)列名类型长度说明cidnumber10出勤信息表的主键pidnumber20出勤人编号(人员表编号)a_begin_timevarchar210上午上班签到时间a_end_timevarchar210上午下班签到时间p_begin_timevarchar210下午上班签到时间p_end_timevarchar210下午下班签到时间remarkvarchar2100备注公司员工请假信息表,存储员工请假编号、请假人员编号、请假人员所属部门编号、请假开始时间、请假天数、备注(作为请假审批标记,若审批通过,则为2*请假天数,若未通过,则为空)。本表与后台hkj.po.Qingjia类相映射。表中字段如表4-5所示。表4-5请假信息表(qingjia)列名类型长度说明idnumber10请假信息表的主键pidnumber20请假人员编号(人员表外键)begin_timevarchar215请假开始时间daysvarchar215请假天数remarkvarchar50作为请假审批标记(通过后为2*请假天数)5系统实现企业考勤管理系统分为员工管理、部门管理、公告管理、请假管理、个人考勤、考勤管理等六大模块。各模块的具体功能划分如下:5.1部门管理管理员对本企业的部门进行添加、查询的功能。5.1.1添加部门管理员可以对公司的部门进行添加如图5-1新增部门信息页面所示。图5-1新增部门信息页面实现原理:本页面提交后,最后在hkj.daoImpl.DeptDAOImpl中通过Hibernate模板调用save()方法实现,核心代码如下:publicStringinsertDept(){ deptService.insert(dept); return"go_success";}5.1.2查询部门管理员可以查询到所有的部门信息,如图5-2查看部门信息页面所示。图5-2查看部门信息页面实现原理:该功能是通过在hkj.daoImpl.DeptDAOImpl中对Hibernate模板的loadAll()方法实现,核心代码如下:publicStringqueryAll(){ List<Dept>listDept=deptService.loadAll(); ServletActionContext.getRequest().setAttribute("listDept",listDept); return"go_listdept";}5.2员工管理系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。普通员工可以进行个人考勤查询,同时还可以有系统公告的管理功能;企业领导可添加公告、员工信息查询、请假管理、考勤管理,可以对员工考勤进行查询操作,管理员可控制整个系统的登录功能,员工维护,拥有整个系统的全部使用权限。5.2.1添加员工添加员工信息,并添加登录系统的权限。管理员可以为新入职的员工填写信息,赋给登录本系统的权限和密码,并插入到员工信息表中。如图5-3添加员工页面所示。图5-3添加员工页面实现原理:本页面中的部门编号是从后台hkj.daoIm.DeptDAOImpl类中通过Hibernate的模板调用load方法加载出来的,插入也是通过Hibernate的模板调用save()方法存入数据库中,核心代码如下:publicStringinsertLoad(){ List<Dept>listDept=deptService.loadAll(); ServletActionContext.getRequest().setAttribute("listDept",listDept); return"go_insert";}publicStringinsertPerson(){ personService.insert(person); return"go_success";}5.2.2查询员工查出全部员工的信息,并以列表形式展现,管理员可以在此为每位员工更改登录系统的权限,以及员工的部分信息,并且可以删除员工(永久性删除)。如图5-4查询全部员工信息页面所示。图5-4查询全部员工信息页面实现原理:通过对后台hkj.daoImpl.PersonDAOImp类中的queryAll()方法调用,其中是由Hibernate的loadAll()实现的,核心代码如下:publicStringqueryAll(){ List<Person>listPerson=personService.loadAll();ServletActionContext.getRequest().setAttribute("listPerson",listPerso); return"go_list";}(1)修改登录权限点击修改按钮,页面跳转为员工详细信息页面,并可以修改员工登录权限,以实现员工、管理员的转换。(2)删除员工信息对于离职的员工管理员可以删除员工的信息(彻底删除)5.3公告管理领导对本系统中的所用子级用户进行发布公告及编辑详细功能模块如图5-5公告管理功能模块图所示。图5-5公告管理功能模块图5.3.1发布公告管理员可以发布公告,通知所有员工公司的一些新消息,如图5-6发布公告页面所示。图5-6发布公告页面实现原理:后台在hkj.daoImpl.DeptDAOImpl中对Hibernate模板的save()方法调用实现,核心代码如下:publicStringinsertNews(){newsService.insert(news);return"go_success";}5.3.2管理公告管理员可以管理公告,对公告进行修改和删除如图5-7管理功能页面所示。图5-7管理公告页面实现原理:后台是在hkj.daoImpl.DeptDAOImpl类中对Hibernate,模板下的loadAll()方法的调用实现加载到当前页面,并通过调用update()和delete()方法实现公告的修改和删除,核心代码如下:publicStringqueryAll(){ List<News>listNews=newsService.loadAll(); ServletActionContext.getRequest().setAttribute("listNews",listNews); return"go_listnews";}(1)修改公告信息管理员可以修改公告的相关信息,如图5-8修改公告信息页面所示。图5-8修改公告信息页面实现原理:后台在hkj.daoImpl.NewsDAOImpl中通过Hibernate模板的update()方法调用,将页面传过来的值修改到数据库中,核心代码如下:publicvoiddelet(Newsnews){this.getHibernateTemplate().delete(news);}(2)删除公告信息管理员可以删除时间过长的公告信息实现原理:后台在hkj.daoImpl.NewsDAOImpl中通过Hibernate模板的delete()方法调用实现,核心代码如下:publicvoidupdate(Newsnews){ this.getHibernateTemplate().update(news);}5.4个人考勤用户登录系统后,可以考勤(上班,下班)签到。5.4.1考勤签到无论是普通员工或者是管理员都需要签到考勤,点对应的签到时间点,可以实现员工的每天签到,如图5-9考勤签到页面所示。图5-9考勤签到页面实现原理:后台是在hkj.daoImpl.ChuqinDAOImpl中通过Hibernate模板的save()和update()方法的调用实现的,早晨第一次签到调用的是save(),剩余一天其他时间的签到是通过update()方法实现的。获取签到时间是通过JAVA语言在hkj.action.ChuqinAction中用自己写的工具类中的getTime()方法获取系统当前时间以拼字符串的形式返回并重新为签到对象赋值,核心代码如下:publicStringinsertChuqin(){ chuqin.setABeginTime(GetSysTime.getTime()); chuqinService.insert(chuqin); return"go_success";}publicStringupdateChuqin(){ chuqin.setABeginTime(GetSysTime.getTime()); chuqinService.update(chuqin); return"go_success";}自己写的获取时间的工具类,核心代码如下:publicclassGetSysTime{ publicstaticStringgetTime(){ Calendarca=Calendar.getInstance(); Stringtime_str=""; Stringyear=ca.get(Calendar.YEAR)+"-"; Stringmonth=ca.get(Calendar.MONTH)+1+"-"; Stringday=ca.get(Calendar.DATE)+""; time_str=time_str+year+month+day; returntime_str; }}5.4.2请假管理员和员工的请假信息通过该页面插入到数据库中,等待管理员审核,如图5-10请假页面所示。图5-10请假页面实现原理:后台在hkj.daoImpl.QingjiaDAOImpl中通过Hibernate模板的save()方法调用实现,核心代码如下:publicvoidinsert(Qingjiaqingjia){ this.getHibernateTemplate().save(qingjia);}5.5请假管理相关部门领导对请假情况进行管理操作(准请假和不准请假)。管理员可以查看所有请假信息,并且在查看页面可以对单一请假信息审查,通过更改请假信息的备注,可以申明是否批准。如图5-11请假管理页面所示。图5-11请假管理页面实现原理:后台是在hkj.daoImpl.QingjilaDAOImpl中通过Hibernate模板loadAll()方法调用实现所有请假信息的加载,通过load()方法加载要审核的请假信息,通过update()方法修改请假信息实现请假审核,并且通过调用delete()方法实现对于月底所有假条的删除,核心代码如下:publicStringupdateLoad(){HttpServletRequestrequest=ServletActionContext.getRequest(); Longid=(Long)request.getAttribute("id"); Qingjiaqingjia=qingjiaService.load(id); request.setAttribute("qingjia",qingjia); return"go_update";}publicStringupdate(){ qingjiaService.update(qingjia); return"go_success";}publicStringqueryAll(){ List<Qingjia>listQingjia=qingjiaService.loadAll(); ServletActionContext.getRequest().setAttribute("listQingjia",listQingjia); return"go_listQingjia";}publicvoiddelete(Longid){ this.getHibernateTemplate().delete(id);}5.6考勤管理领导可以对本部门员工的全部考勤进行查询的功能操作,但普通员工只能对自己的考勤有查询的功能。考勤管理:管理员可以对本部门的员工本月考勤记录进行查询,并可查看详细考勤情况,如图5-12考勤统计记录所示。图5-12考勤统计记录实现原理:后台是在hkj.daoImpl.ChuqinDAOImpl,hkj.daoImpl.QingjiaDAOImpl,hkj.daoImpl.PersonDAOImpl中分别调用Hibernate中的session下的createQuery()方法,按照条件查询出员工的出勤信息,请假信息,并用自己写的DaClass工具类作为一个容器来装这三条结果,并在页面显示出来,核心代码如下:publicList<DaClass>tongji(Personperson){ List<DaClass>listDaClass=newArrayList<DaClass>(); Personp=personDAO.load(person); if(p.getIsgrant()==1){ List<Person>listPerson=personDAO.queryByDid(p); for(Personper:listPerson){ StringmapChuqin=chuqinService.tongJi(per); StringmapQingjia=qingjiaService.tongjiQingjia(per); DaClassdaClass=newDaClass(); daClass.setPerson(per); daClass.setMapChuqin(mapChuqin); daClass.setMapQingjia(mapQingjia); listDaClass.add(daClass); } returnlistDaClass; }else{ StringmapChuqin=chuqinService.tongJi(p); StringmapQingjia=qingjiaService.tongjiQingjia(p); DaClassdaClass=newDaClass(); daClass.setPerson(p); daClass.setMapChuqin(mapChuqin); daClass.setMapQingjia(mapQingjia); returnlistDaClass; }}6总结经过将近三个月的时间,基本完成了本次的毕业设计公司考勤管理系统。在完成毕业设计的过程中,根据需求分析和查询的资料,该系统主要通过不同的管理权限分为管理员和普通员工及禁止登陆。并通过权限的不同,将管理员的操作功能分为六个模块,分别是:部门管理,添加和查看部门;员工管理,对员工进行查看和添加的操作,同时可以修改员工权限,并删除员工;公告管理,查看和发布公告,并且可以对公告进行修改和删除;个人考勤,管理员个人的考勤签到及请假;请假管理,对员工的请假申请做出审核;考勤管理,查看员工考勤状况。并且该系统赋予普通员工查看公告,考勤签到,请假的权限。系统完成后,经多番测试,在Windows7的操作系统与Tomcat的Web应用程序调试环境上运行正常。但是由于时间仓促,及本人理论知识、开发技术、实践经验和现有设备的局限,该系统难免存在许多的不足之处,有待于改进和完善。本系统的一些不足与缺陷如下:(1)对于数据库中的数据的日常维护不够全面,对删除数据的处理,未能做到对数据的备份与恢复。(2)对于权限的管理做得并不是特别细致。参考文献[1]冯燕奎,赵德奎.JSP实用案例教程[M].清华大学出版社,2004:78-89[2]黄刘生.数据结构[M].经济科学出版社,1999:103-115[3]黄晓东.JAVA课程设计案例精编[M].中国水利水电出版社,2004:320-345[4]覃庆炎,张伟.Java开源项目:Spring+Hibernate+Struts项目开发详解[M].清华大学出版社,2008:318-342[5]汪晓平,钟军.JSP网络开发技术[M].人民邮电出版社,2004.5.1:102-104[6]宣小平,但正刚,张文毅.JSP数据库系统开发实例导航[M].人民邮电出版社,2003.1.1:67-69[7]冯昊.JSP动态网页设计与上机指导[M].清化大学出版社,2003.7.2:109-117[8]徐立,聂小燕,谢勇.中文DreamweaverMX2004白金教学[M].兵器工业出版社,2009:286-298[9]李刚.Struts2权威指南[M].电子工业出版社,2008:127-133[10]徐明华.JavaWeb整合开发与项目实战——JSP、Ajax、Struts、Hibernate、Spring[M].电子工业出版社,2008:338-369[11]闫术卓.Struts2技术详解[M].北京:电子工业出版社,2008[12]霍尔,布朗,蔡金.Servlet与JSP核心编程[M].北京:清华大学出版社,2009[13]HansBergsten.JSP设计[M].北京:中国电力出版社,2004[14]BruceEckelJAVAprogrammingideas[M].MachineryIndustryPress,2005:422-432[15]ThomasKyte.Oracleexpertprogramming[M].TsinghuaUniversitypress,2002:56-7致谢在完成本次的毕业论文之际,我完成了软件工程本科的学业,系统的学习了软件专业专业知识,更深程度地了解了计算机在各行各业的应用,也掌握了计算机应用的能力。在此特别感谢陈晨老师在我学习和做论文项目的时候给我的帮助和鼓励。也特别感谢学校四年来对我的教导,让我在软件方面有所收获。通过学习,并结合具体实践,我完成了公司考勤管理系统的毕业设计,从而让自己在项目规划和软件程序设计各方面有了进一步的认识和实践经验。目录TOC\o"1-2"\h\z\u1. 总论 11.1 项目概况 11.2 项目建设的必要性 21.3 可行性研究工作依据 61.4 可行性研究报告的编制原则 61.5 可行性研究报告内容概要 71.6 建议引进设备清单 151.7 结论及建议 151.8 项目主要技术经济指标汇总 162. 市场需求预测与竞争能力分析 192.1 概述 192.2 广西区内市场 192.3 主要目标市场分析 222.4 广东省水泥市场分析 242.5 竞争能力分析 272.6 市场分析结论 283. 建设条件与厂址选择 293.1 原、燃材料 293.2 交通运输 313.3 供电电源 313.4 水源 313.5 厂址条件 324. 工程技术方案 334.1 原燃料与配料设计 334.2 石灰石矿山 464.3 生产工艺 584.4 总图运输 724.5 电气及生产过程自动化 764.6 给水排水 854.7 通风及空气调节 874.8 建筑结构 895. 节约与合理利用能源 925.1 主要能耗指标 925.2 主要节能措施 929. 工程建设招标安排 10810. 项目建设进度的建议 11010.1 项目管理 11010.2 项目实施进度 11011. 投资估算 112

温馨提示

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

评论

0/150

提交评论