企业人事管理系统设计与实现_第1页
企业人事管理系统设计与实现_第2页
企业人事管理系统设计与实现_第3页
企业人事管理系统设计与实现_第4页
企业人事管理系统设计与实现_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

年4月19日企业人事管理系统设计与实现文档仅供参考,不当之处,请联系改正。本科毕业设计(论文)题目企业人事管理系统设计与实现完成时间6月1日毕业设计(论文)任务书题目企业人事管理系统设计与实现主要内容、基本要求、主要参考资料等:主要内容:为了应对现代企业越来越复杂的组成结构和由此产生的繁重的管理工作,提高企业的工作效率和凝聚力,避免因人为因素造成的数据丢失等严重后果,使用Java、SqlServer、JSP技术设计一个企业人事管理系统,为企业日常业务的综合管理工作提供帮助,主要模块有员工资料、部门管理、职位管理、签到、请假管理、招聘、奖惩管理、加班管理、公告系统、资料共享等模块。基本满足企业日常的业务需求,实现企业的现代化管理。基本要求:1.所实现的功能基本满足企业的日常使用。2.安全可靠,易于开发和维护、有较强可扩充性。主要参考资料:[1]刘浩.Java从入门到精通[M].北京:人民邮电出版社,.[2]陈海山.深入JavaServlet网络编程[M].北京:清华大学出版社,.[3]耿祥义,张跃平.Java基础教程[M].北京:清华大学出版社,.指导教师签名:专业负责人签名:年3月3日目录摘要 IABSTRACT II1绪论 11.1开发背景 11.2开发目标 11.3开发思想 22技术介绍 32.1B/S结构 32.2Java语言简介 32.3MyEclipse介绍 42.4SqlServer 42.5JDBC 43可行性分析 73.1技术可行性 73.2运行可行性 73.3经济可行性 84需求分析 54.1功能需求 54.2性能需求 54.3其它需求 65概要设计 95.1系统总体设计 95.2各个模块设计 95.3应聘子系统设计 106数据库设计 126.1数据分析 126.2数据表实现 137系统实现 197.1各个模块实现 197.2应聘子系统实现 307.3关键方法 328系统测试 358.1用例设计 358.2测试实施 368.3测试结论 37结束语 38致谢 39参考文献 40企业人事管理系统设计与实现摘要随着现代企业的发展,企业组成的复杂度变得越来越大,单纯的手工管理在处理业务时效率低下,已无法满足企业的需求,开发一个简单方便、可靠性好的人事管理系统显得极为必要。针对这些需求,在分析了业务逻辑后,进行人事管理系统的设计工作,采用B/S架构,Java作为开发语言,SqlServer作为数据库,主要实现了员工信息、部门管理、招聘管理、薪资管理、考勤管理、文件共享等功能。另外设计了一个应聘子系统作为主系统的补充,让应聘者创立信息、浏览公司职位和查看自己的处理结果,增强系统的人事管理功能,以软件工程开发流程为指导,并借鉴MVC设计模式,最终完成了企业人事管理系统的开发。该系统的实现为企业管理工作带来了便利,降低了管理成本,提高效率,能够基本满足中小型企业的需求,这也是该系统的开发目的所在。关键词人事管理,B/S,SQLServer,JDBCTHEDESIGNANDIMPLEMENTATIONOFENTERPRISEPERSONNELMANAGEMENTSYSTEMABSTRACTWiththedevelopmentofmodernenterprises,thecomplexityoftheEnterprisehasbecomemoreandmorebig,simplemanualmanagementisinefficiencyindealingwithbusiness,hasbeenunabletomeettheneedsofenterprises,todevelopasimple,reliable,appearsgoodpersonnelmanagementsystembecomeextremelynecessary.Inresponsetotheseneeds,aftertheanalysisofthebusinesslogic,designworkandpersonnelmanagementsystem,usetheB/Sarchitecture,Javaasadevelopmentlanguage,SqlServerasadatabase,Hadachievedtheemployeeinformation,sectormanagement,recruitmentmanagement,payrollfunction,andattendancemanagementfunction,filesharingandotherfunctions.Alsowedesignedacandidatesubsystemtosupplementtheprimarysystem,sothatcandidatescreateinformation,visitthecompany'spositionandviewtheirresults,andenhancethesystem'spersonnelmanagementtosoftwareengineeringprocessesasaguide,andlearnMVCdesignpattern,finallycompletedthedevelopmentofpersonnelmanagementsystem.Implementationofthesystemofenterprisemanagementismadeeasier,reducemanagementcosts,improveefficiency,itcanbasicallymeettheneedsofSmallandMediumEnterprises,whichisthesystem'sdevelopmentpurpose.KEYWORDSpersonnelmanagement,B/S,SQLServer,JDBC1绪论1.1开发背景随着计算机技术的进步,中国的高速发展,企业的管理机制正在发生着重要变化,现代企业在管理中逐渐引入了现代化的管理技术,当今社会正在朝着信息化、科学化的方向快速发展,信息自动化的意义和作用已经越来越大,她能够使我们不再疲惫于繁重的人力资源管理工作,而是利用信息化的技术去进行管理[1]。当前很多企业依然没有一个系统化、规范化的人事管理软件,人事管理还处于最基础的人工管理阶段,效率低下,已经远远不能满足当今社会对人事管理的需求,而且人工管理有很多显而易见的弊病,会出现因为人为的操作失误,错误操作,造成数据的丢失、损坏、误报,给企业造成不可挽回的损失,另外,时间一长,这种管理方式会产生大量的文件,对于更新维护带来了不少困难。这些现象层出不穷[2]。人事管理是现代企业管理中不可忽视的一个重要组成部分,竞争对于企业管理者提出了更多的挑战,人事的管理另一种意义,就是对企业生命和前途的管理,人事是最宝贵的资源,一个企业没有了可用之才,那么这个企业会变得岌岌可危,实现办公自动化已经得到了企业的重视,企业要想在当今激烈的竞争中生存下来,就必须要引入信息化管理,做好人才的管理工作。1.2开发目标当前在市场上已经存在很多人事管理系统,人事管理系统在现代化的企业管理中越来越受到管理者的重视,可是这些都并不一定满足企业的日常应用,这些软件确实很好,可是对于企业来说,需要的是一个实用、高效、价格低廉的软件,购买一个这样的软件,本身就是一笔很大的开销,再加上日常的维护处理,带来的工作成本会大大提高,得不偿失。在企业管理中并不需要特别大型的管理系统,操作简便、功能强大、满足基本的日常工作处理即可[3]。降低人事管理的成本,提高效率,科学化的管理企业。这就是本系统开发目标所在。1.3开发思想在设计一个系统之前,首先要对这个系统要有一个清晰的认识,知道要实现什么功能,要设计什么模块,以及权限控制,安全控制等,这些因素都要考虑到[4],这是对一个系统最基本的认识,一个简单好用的系统应该包括操作便捷、界面美观大方、运行速度快、学习成本小等等优点,让使用者能够快速上手,方便快捷的对企业进行管理。由此分析出,此系统应该具有以下几个特点:(1)高技术性:采用比较先进的开发工具,本系统采用了Java开发最为流行的集成开发工具:MyEclipse和SqlServer数据库相结合,进行开发和实现工作,MyEclipse是一个功能非常强大的IDE,微软开发的SqlServer在市场一直有着良好的评价,能够大容量的进行数据存储,使用Java作为开发语言,采用了MVC[5]思想进行模型构建,充分运用了先进的技术来开发本系统。(2)实用性:在开发系统之前,做了很多相关方面的调查,包括和公司领导进行沟通交流,发现在企业中的实际需求,以及上网查询资料,观察类似的软件都实现了什么功能,一切从需求出发,以需求为引导,以用户的方便为准则,进而提出了需求分析和概要设计,切实满足用户需求和要求,达到让用户满意的程度。(3)严谨性:企业最看重的是数据的安全问题[6],数据安全也是软件设计工作中的重中之重,为了保持数据的完整性和保密性,在充分调查了企业的需求之后,本系统设计了三种登录身份,一种是普通用户身份,权限最低,一种是管理员身份,能够对系统的各个模块进行操作,比如录入工资,更新公告,更新奖惩办法,处理请假申请等等一系列信息,可是不能对一些敏感数据进行操作,如果想进行操作,就需要以第三种身份进行登录:超级管理员,能够对敏感信息进行操作,比如删除考勤记录、删除工资记录、用户管理等,防止有人恶意篡改数据,在一定程度上保证了数据的安全性。(4)复用性:采用模块化方法进行开发和设计,对于各个模块都相同的代码进行了通用类的设计,达到设计出高内聚,低耦合的程序的目标,提高了系统的复用性。2技术介绍2.1B/S结构B/S结构,即服务器/浏览器结构,它是随着Web技术的发展建立起来的模型,在当前的Web开发中属于一种比较常见的模式,应用较为广泛,从传统的C/S(客户端/服务端)结构转变而来,是一种新的网络模式架构,其实本质就是三层的C/S架构,在B/S架构下,用户界面是用JSP编写,经过浏览器进行显示,在前端只执行极少数的业务逻辑,主要业务均在后端(Server端)实现,极大的简化了客户端的电脑负荷,使得日后的维护工作只要对服务器端进行维护即可,减轻了开发成本与系统维护、升级的费用[7]。可是由此带来的后果是服务器负荷交大,对服务器的性能要求较高,具体结构如图2-1所示。图2-1B/S模型结构示意图2.2Java语言简介当前有许多开发语言能够选择,面对这些开发语言,在项目开发的准备工作中,最终选择了Java作为开发语言,因为Java有强大的面向对象特性,能够很好的区分业务逻辑和页面开发。Java是在1995年,由SunMicrosystem公司发布的一种面向对象的设计语言,以及开发平台的总称,最初命名是Oak,当初被作为嵌入式语言为消费类的电子产品而设计的,现在被广泛用于开发Internet程序,Java是一种平台无关的语言[8],能够跨平台编写开发应用。自从Java被开发出来,让整个Web开发发生了翻天覆地的变化。Java有着通用性、高效性等诸多特点,在各个平台能够很方便的进行移植,广泛的用于个人PC、数据库服务器、移动开发、游戏服务器、互联网开发、Web开发等领域,Java在全球的使用度和C不相上下。2.3MyEclipse介绍MyEclipse是在Eclipse的基础上,加入插件插件而形成的企业级应用开发环境,主要用于JAVA、JAVAEE以及移动应用的开发,MyEclipse因为其强大的功能,拥有者广泛的支持,对各种开源框架的支持也相当不错。全称是MyEclipseEnterpriseWorkbench,是一个功能非常丰富的JAVAEE集成开发环境,是对Eclipse的IDE的扩展,利用Myeclipse能够使用数据库进行JAVASE、JAVAEE的开发,发布以及应用程序的整合,Myeclipse因为其强大的开发环境支持,能够大大提高工作进度和效率,包括了完整的编码、调试、发布功能。Myeclipse几乎囊括了市场上所有主流的专属开发工具。2.4SqlServerSqlServer数据库是由微软公司推出的,在Sqlserver的基础上做出改进的关系型数据库系统。能够在各个Windows操作系统上正常使用,Sqlserver是一个非常全面的数据库平台,能够为任何规模的企业和机构提供强大的信息管理解决方案,使用了智能的商业智能工具提供了企业级的数据管理[9],能够让开发者构建更为强大的数据应用程序,因此本系统采用了SqlServer作为系统数据库进行开发。2.5JDBCJDBC[10],全称是JavaDataBaseConnectivity,即Java与数据库的连接技术,是一组针对连接数据库而开发的API,能够支持多个数据库,提供统一的访问方法,是一种标准,开发厂商能够由此定制自己的开发工具和结构,使系统的开发人员能够用此让Java和数据库得到连接,JDBC是一种数据库连接的基准,JDBC开发标准的的接口,并为数据库厂商和使用者提供了标准的数据库连接方法,由一组用Java编写的类和接口组成。有了JDBC技术,使从Java向数据库发送数据变得容易,就不必再为每个数据库再专门编写程序,使得程序员不必再为跨平台的问题而担心,不必再为不同的平台编写不同的程序,真正实现了“一次编写,到处运行”。3可行性分析在开展开发工作之前,需要对可行性进行分析和调查,可行性分析是一个系统在开发之前研究项目是否可行的技术,在分析系统之后,发现开发中存在的问题和可能性,主要从经济、技术、运行、进行分析和研究,减少开发风险,避免人力物力的浪费,调查的方式有很多种,包括上网查阅资料,观察其它类似系统是怎么实现的,以及走访企业,和系统分析员进行交流,和人事管理员进行沟通等等,并了解企业的工作方式和工作流程,以及具体的实施办法,分析结果是使用完善的企业人事管理系统能够非常方便的进行企业管理,极大的提高管理效率,根据上述分析,开始进行可行性研究工作。3.1技术可行性开发环境(IDE[11])可行性:从当前主流的开发技术来看,使用基于JAVAEE的开发架构,B/S作为系统结构,使用Java开发语言以及SqlServer数据库完全能够胜任本系统的开发工作,Java语言向来比较安全,加上SqlServer强大的数据管理,以及MyEclipse的开发工具,完全满足本系统的开发环境要求。开发硬件可行性:系统在开发的过程中开发人员所具有的资料和计算机设备以及相关资源,以及在系统开发完成后,使用企业所具有的计算机设备以及其它资源,要综合考虑双方的情况,设计一个最合理的方案,保证系统在开发出来后,在客户的环境下能够完美运行,同时还要考虑性价比的因素。本系统对于计算机的运行有一定的性能要求,内存不低于1G,硬盘容量大于40G,并需要安装JRE,如果低于这个需求,将会影响系统的正常运行,从当前来看,主流的计算机均达到了这个要求,因此在硬件方面是可行的。3.2运行可行性由于本系统是一个内部系统,不向外部公开,因此避免了外来的恶意访问,本系统在运行过程中只是面向企业内部使用,包括员工、组长、经理等,尽管这些人之前可能没有使用过相关管理软件的经验,可是本系统是建立在Windows操作系统之上,操作界面友好,简单明了,学习成本较低,操作人员无需进行专业的培训即可胜任此工作,能够在专业人员的知道下迅速的掌握系统的使用方法,如果有必要的话,能够编写一个操作说明书,供相关人员进行学习,正确的操作人事管理系统。3.3经济可行性由于现阶段企业的管理依然存在很多问题,依然存在很多人工管理的现象,耗时多,效率低下,极易出错,得不偿失,利用计算机来管理人事成为了当今管理的主流方式,开发一套人事管理系统是非常有必要的。人事管理水平的提高,能够提高企业各方面的能力综合提高,利用本系统作为管理系统,减少因为操作事物造成的数据损失,也能够使企业在管理方面减少很多费用支出,比如实现了自动化操作,能够分配较少的人手去执行数据管理工作,精简人员,减少开支。由以上三方面能够看出,本系统经过可行性分析,从多个方面来考虑,系统的开发工作是可行的。4需求分析需求分析又称为需求调查,是整个系统开发过程的重要组成阶段,也是一个系统开发的基础,它明确了这个系统要实现什么功能,有哪些模块,有哪些数据是要被输入到系统的,最后会获得什么结果,要充分分析用户对系统的要求,对用户提出的问题进行详细的分析,弄清楚客户要求,才能进行下一步的工作,系统开发是以需求为引导的一个过程,为了开发一个实用的系统,首先要进行的就是需求调查和需求分析,明确调查方式,明确调查目的。要了解各个部门的大致工作流程和工作划分,由于开发者和使用者存在着各种各样的问题,提出需求的并不一定都是开发人员,个别用户不了解需要实现的功能,只是根据企业的业务需求提出要求,因此在系统的设计过程中需要两者紧密交流,充分了解对方的业务需求以及实际情况,明确用户需求,进行可行性分析,确认系统的开发工作是否能够进行下去,为系统的开发工作提供有力帮助。在对企业需求进行了充分的分析工作后,对企业的业务需求有了一定的了解,对这些需求进行整理,并借鉴了软件工程的思想,最终分析出如下需求:4.1功能需求(1)功能完备,实现足够多的模块,要了解企业中各个部门的组成情况和主要业务,和相应的日常活动和职能,充分了解企业构造,一个完整的企业人事管理系统应该包括员工信息记录、考勤管理、薪资管理、应聘管理、请假管理、加班管理、公告、资料共享等,企业中的实际业务都要考虑到,而且在开发过程中与使用企业保持沟通,为企业量身定制,充分满足企业需求。(2)有严格的权限管理机制,由于企业的日常工作中会涉及到商业机密,员工的薪资信息、考勤信息都要妥善保存,要防止人为破坏,在系统的设计中要体现业务的严谨性,要保证数据安全,仅仅设置两种身份是不够的,对一些敏感数据的操作对象也要加以限制。4.2性能需求(1)运行稳定,不易出错,系统在设计过程中应该以安全和稳定运行为原则,对错误输入要进行处理,在处理错误输入时要有良好的提示,避免因为操作不当而引起的系统错误,造成服务器宕机等恶劣后果。(2)性能可靠,有一定安全保护措施,比如在实现后台方法时,避免使用Statement,要使用PrepareStatement来防止SQL注入攻击。(3)在面对高并发操作时依然具有良好的反应速度,比如在早晨员工签到的高峰期,以及晚上网络不好时,也应当能够正常的处理数据。4.3其它需求(1)易于学习,系统设计过程中应当保持注意页面的简洁,以及考虑操作的简便性,在系统实施的过程中保证使用人员能够迅速上手,降低学习成本。(2)设计严谨,代码规范,可扩展性好,借鉴MVC设计模式,将业务层、控制层、显示层分开实现,方法不应当写在实体类中,而是要建立接口和实现类,当有一个模块需要改变时,能够只对该模块进行修改,而不会对其它模块产生影响,便于日后的修改维护和二次开发。(3)运行和维护成本低,考虑到中小型企业的经济承受能力,要尽量降低对服务器的性能要求尽量减少资金投入,满足经济性要求。总之,在系统开发之前,必须要对现有的系统进行调查,明确需求,保证所作的功能符合用户的需求,详细的调查情况,研究现有系统的内部结构,设计出一个精确的开发逻辑模型,为之后的开发打好基础。避免耗费大量人力物力,最后却没有开发出让客户满意的系统的现象发生。5概要设计5.1系统总体设计在这个模块中使用结构图来对本系统进行详细描述,树形结构的顶层代表了系统的名称和功能范围,下面的分支则代表相应的子集,最底层的元素则代表具体的功能模块和系统组成,这些模块是最小元素,不能再进行分割,本系统一共包括十三个主要模块,已经基本覆盖了企业的日常业务,另外还有一个附加的应聘子系统,能够由应聘人员注册账号并登录,能够填写自己的应聘信息,以及查看公司的所有职位,还能够使用一些通用功能,以及查看自己是否被录用等等,可是这个系统是相对于主系统独立的,不能进入主系统的界面,为了保证系统的安全性,设计这个附属系统的原因是考虑到招聘录入资料的工作较为繁琐,能够让应聘者自行登录,进行资料的填写,作为主系统的补充,能够让整个系统变得更为完善。本系统的总体设计图如图5-1所示。企业人事管理系统企业人事管理系统系统设置通用功能资料共享加班管理请假管理出勤管理奖惩管理公告系统薪资管理职位管理部门管理应聘管理系统设置通用功能资料共享加班管理请假管理出勤管理奖惩管理公告系统薪资管理职位管理部门管理应聘管理员工信息图5-1人事系统总体结构图5.2各个模块设计本系统共有十三个功能模块,基本已经覆盖了企业日常的所有业务,各个模块实现的功能有:(1)部门管理:能够分页查看企业的所有部门列表,点击查看部门详细信息,以及查询部门信息,管理员则能够进行添加部门,以及修改部门信息,同时能够查看该部门有多少员工,能够查看员工详细信息,部门不能删除。(2)职位管理:员工能够查看企业的所有职位以及查看职位详细信息,查询职位,管理员则能够增加职位,以及修改职位信息,管理员能够查看每个职位有多少个员工,并能够查看这些员工的详细信息。(3)员工信息:员工信息是整个系统最重要的组成部分,员工能够查看自己的信息,以及对信息进行修改,可是不能查看其它人的信息,管理员则能够查询和查看所有员工的信息,可是不能修改。(4)招聘管理:本模块是专门为招聘人员设计,而且普通用户无法进入到该页面查看里面的内容,管理员能够添加应聘人员的信息,修改应聘人员的信息,以及查询某个应聘人员的信息,还能够根据应聘人员的处理状态进行分类查看,如:未处理、未录用、已录用。(5)薪资管理:员工能够查看自己的薪资记录,管理员能够增加薪资信息,为了保证数据的完整性,薪资管理没有提供修改方法,只能删除。(6)公告管理:为了方便公司业务,员工身份也能够发布公告,管理员则能够修改公告和删除公告。(7)奖惩管理:员工能够查看和查询奖惩方法列表以及查看奖惩办法详情,管理员能够对奖惩信息进行增加、修改和删除。(8)出勤管理:员工每天进行签到,而且能够按月份查看自己的签到信息,出勤信息不能修改,不能手动增加,只有超级管理员能够删除出勤记录。(9)请假管理:员工能够申请请假,内容有请假天数,开始时间,理由等,以及查询自己的请假信息,请假信息初始为未处理状态,管理员能够处理请假申请,以及查询、删除请假记录。(10)加班管理:员工能够添加加班记录,添加后不能修改,管理员能够对加班信息进行修改和删除。(11)资料共享:所有人都能够上传和下载资料,方便企业的资料传递和交流,可是只有管理员能够删除。(12)通用功能:打开系统自带的计算器软件,方便日常使用。(13)系统设置:能够修改员工的身份,以及新建帐号、修改权限、禁用账号。5.3应聘子系统设计为了方便人事人员的日常工作,考虑到录入大量的应聘人员资料是一个非常繁琐的工作,不如让应聘人员自己注册账号,登录系统进行应聘资料的填写,基于这个想法,在采纳了指导老师的意见后,开发了企业人事管理系统的附属子系统:应聘系统,作为主系统的补充,能够由应聘人员自己注册账号进行登录,填写自己的应聘资料,同时应聘人员能够查看公司的所有职位,可是这个系统是相对于主系统独立的,不能进入到主系统的界面,保证了主系统的安全,具体的组成如图5-2所示。应聘子系统应聘子系统应聘资料查看结果公司职位信息应聘资料查看结果公司职位信息修改信息查看职位填写信息修改信息查看职位填写信息图5-2附属应聘子系统总体结构图子系统功能介绍:(1)应聘资料:应聘人员能够填写自己的应聘信息,而且能够修改信息,能够查看自己是否被录用。(2)公司职位信息:应聘人员能够查看企业的所有职位,不能进行修改。6数据库设计6.1数据分析数据分析是数据库在设计之前就要考虑的第一个步骤,设计者要分析数据库的物理结构和逻辑结构,确定需要获取哪些信息,以一种直接的、分类的方法来捕捉用户的信息。在本系统中,最为直观的对象就是员工,经过员工表将其余的各个表连接起来,来实现对员工信息的综合管理,是本系统的设计思路。在系统的设计过程中使用信息建模的技术,经过实体、关系、属性这三个最重要的因素来确定对象,实体是在系统的使用中需要维护的相关特征的集合,属性是这些实体的特征和特性,而最后的关系则是各个实体之间的联系,关系为各个实体之间的联系建立了基础。经过之前一系列的分析,根据各个实体之间的关系,设计出本系统的数据表结构,本系统的数据库E-R图如图6-1所示。查看查看资料职位应聘部门资料职位应聘部门上传拥有公告上传拥有公告属于属于发布处理发布处理制定奖惩请假申请用户制定奖惩请假申请用户发放属于生成申请发放属于生成申请薪资薪资加班加班角色出勤角色出勤 图6-1数据库E-R图6.2数据表实现数据库是每个系统必不可少的组成部分,在系统的实际使用过程中,不可能直接调用数据库中的信息,而是要经过JDBC技术去获得数据库中的信息,因此必须将软件设计的概念转化为数据表去操作数据,要将其转换为逻辑结构[12]。本系统使用SqlServer作为数据库使用,一共有十二张数据表。(1)部门表(department):记录各个部分的详细信息。(2)职位表(position):保存企业的职位信息,以及进行修改。(3)用户信息表(userinfo):是整个系统中最重要的表,记录了系统的所有使用者的信息。(4)应聘信息表(candidate):为人事部设计,专门用来招聘工作的使用。(5)公告表(news):更新和发布、删除公告。(6)薪资表(salary):记录每个员工每个月的薪资信息。(7)奖惩方法表(jc):明确企业中对于每个奖惩办法的处理情况,使企业办事更加公开透明,有利于企业内部团结。(8)出勤记录表(attendancerecord):记录每个员工每天的出勤情况,员工每天的签到记录都保存在这张表中,每人每天只能插入一条数据。(9)请假表(leaves):员工能够在这个表中记录请假信息和请假申请,并由管理员负责处理这些请假信息。(10)资料共享表(datum):每个员工都能够自由的上传和分享资料,而且能够下载,方便企业中资料的流传,有利于员工的日常交流。(11)加班表(extrawork):记录每个员工的加班信息,用作月末时计算工资使用。(12)角色表(roles):保存了系统中的所有身份,用来实现权限控制。保存在cpmns.MDF文件中,这些表分工明确,分别记录了不同的数据,共同为系统的运行提供支持。下面将对数据库中的各个表内容做出详细解释。(1)部门表Department部门表包括部门ID,部门名称、部门负责人、部门联系电话、部门创立时间这几个信息,部门ID被userinfo表作为外键引入,每个员工都有自己的部门,员工表经过引入部门外键能够查看部门的详细信息以及进行相关统计工作,部门表的详细设计如表6-1所示。表6-1部门表Department字段名数据类型是否主键有无外键描述didintYes部门IDdepartmentnamevarchar(20)部门名称managervarchar(10)负责人telvarchar(11)部门电话createtimevarchar(50)创立时间(2)职位表Position保存企业中的所有职位和信息,如ID、职位名称、添加时间等、并作为用户表的外键引入,每个用户都有一个职位,创立时间不能修改,详细设计如表6-2所示。表6-2职位信息表Position字段名数据类型是否主键有无外键描述pidintYes职位IDpositionnamevarchar(20)职位名称memovarchar(80)备注addtimevarchar(50)创立时间(3)公告表News公告表用来保存发布的公告,能够记录发布者的名字,发布时间等信息,表中引入了用户表userinfo中的userid作为外键,在添加公告时能够记录发布者的名字,能够保存企业中的公告信息,详细设计如表6-3所示。表6-3公告表News字段名数据类型是否主键有无外键描述idintYes公告IDnewstitlevarchar(20)公告标题useridvarchar(20)Userinfo(userid)发布者IDnewstimedatetime发布时间newscontentvarchar(500)公告内容(4)用户表Userinfo用户表是企业中保存实际使用者的表,设计最为复杂,保存了用户的所有信息,员工用来登录的帐号密码也保存在此表中,每个使用者都有一个身份信息,表中的isuseable字段代表了该帐号是否可用,默认为1,如果是0则帐号无法使用。因为用户表是整个系统中最为重要的信息,如果删除会造成其它数据出现异常,因此不能删除,只能禁用,pid则对应职位表中的职位ID,代表员工在企业中的职位。详细设计如表6-4所示。表6-4用户表Userinfo字段名数据类型是否主键有无外键描述useridintYes员工IDuaccountvarchar(20)帐号upasswordvarchar(20)密码isuseableint是否可用personnamevarchar(20)姓名sexvarchar(5)性别ageint年龄cardidvarchar(18)身份证号visagevarchar(20)政治面貌ancestralhomevarchar(20)籍贯borndatedatetime出生日期schoolvarchar(20)毕业院校Majorvarchar(10)专业Schoolingvarchar(10)学历Telvarchar(11)电话Homeaddressvarchar(50)住址departmentidintdepartment(did)所属部门intimedatetime入职时间pidintposition(pid)职位外键ridintrole(rid)角色外键memovarchar(50)备注leavetimedatetime离职时间(5)薪资表Salary薪资表用来保存员工的每月的薪资信息,包括发放时间、基础工资、奖金、罚金以及备注信息等,详细设计如表6-5所示。表6-5薪资表Salary字段名数据类型是否主键有无外键描述idintYes薪资IDuseridintuserinfo(userid)员工编号paymonthdatetime发放日期basemoneydecimal基本工资rewarddecimal奖金forfeitdecimal罚金totalmoneydecimal实际薪资memovarchar(50)备注(6)应聘信息表Candidate为了方便人事部的招聘工作,设计了这个应聘信息表,用来记录所有应聘者的信息,对应聘人员进行筛选,该表保存了应聘者的所有信息,在附属子系统中,应聘人员能够使用帐号和密码进行登录,并能够查看自己是否被录用。详细设计如表6-6所示,应聘人员的登录信息都存放在这张表中,便于管理员进行操作。表6-6应聘表Candidate字段名数据类型是否主键有无外键描述idintYes应聘者IDcanaccountvarchar(20)帐号canpasswordvarchar(20)密码cannamevarchar(20)应聘者名字sexvarchar(5)性别ageint年龄borndatedatetime出生日期schoolvarchar(20)毕业院校majorvarchar(20)专业schoolingvarchar(10)学历experiencevarchar(20)工作经验telvarchar(11)电话homeaddressvarchar(50)住址memovarchar(200)备注createtimedatetime创立时间positionnamevarchar(20)应聘职位ispassint是否经过(7)奖惩方法表Jc奖惩方法表记录了企业对于各种奖惩方法的详细实施办法,员工在出现这类状况时,能够根据这些信息进行具体的奖惩办法实施,能够使办事制度公开透明化,有利于企业的团结和凝聚力,详细设计如下,详细设计如表6-7所示。表6-7奖惩方法表Jc字段名数据类型是否主键有无外键描述idintYes奖惩方法IDjctypeint奖惩类别jcnamevarchar(20)奖惩名称jcmoneydecimal奖惩金额memovarchar(50)备注addtimedatetime创立时间(8)出勤记录表Attendancerecord出勤信息表记录了所有员工日常的签到信息,所有员工的签到记录都保存在这张表中,记录每天的出勤信息,录入时间时调用GETDATE()变量,录入时间晚于9点则视为当天迟到,详细设计如表6-8所示。表6-8出勤记录Attendancerecord字段名数据类型是否主键有无外键描述idintYes出勤编号useridintuserinfo(userid)员工编号attendancetimedatetime签到时间flagint是否迟到(9)请假表Leaves为了更好的管理员工的请假记录,设计了请假表,该表保存了所有的请假信息,包括申请人,申请时间,离开时间,理由,以及处理人和处理时间等信息,添加请假记录时默认为未处理状态,处理时能够保存处理人的信息,系统中能够根据月份计算出每个月每名员工的请假次数,管理员能够根据员工每个月的请假次数来进行工资的发放,详细设计如表6-9所示。表6-9请假表Leaves字段名数据类型是否主键有无外键描述idintYes请假编号useridintuserinfo(userid)员工编号applytimedatetime申请时间leavetimedatetime离开时间daycountint离开天数reasonvarchar(50)理由ispassedint是否批准dealidintuserinfo(userid)处理人dealtimedatetime处理时间memovarchar(50)备注(10)资料共享表Datum资料共享列表能够记录所有资料上传者信息,以及资料的名称,上传时间等信息,上传的资料相关信息会记录到这张表上,作为管理员管理资料的依据,详细设计如表6-10所示。表6-10资料共享Datum字段名数据类型是否主键有无外键描述IdintYes资料编号Useridintuserinfo(userid)员工编号Datumnamevarchar(100)资料名称Uploadtimedatetime上传时间(11)加班信息表Extrawork几乎所有企业都存在加班的情况,因此本系统设计了加班信息表,记录了加班信息,如加班人、加班开始时间、加班时长、加班费等,加班信息表的数据最后会作为工资发放的依据之一。详细设计如表6-11所示。表6-11加班信息表Extrawork字段名数据类型是否主键有无外键描述idintYes加班编号useridintuserinfo(userid)用户编号starttimedatetime开始时间extratimeint加班时长extramoneydecimal加班费memovarchar(50)备注(12)角色表Roles角色表存储了本系统中所用到的角色,在UserInfo表中引入该表作为外键,用来实现系统的权限控制功能,详细设计如表6-12所示。表6-12角色表Roles字段名数据类型是否主键有无外键描述ridintYes角色编号rolenamevarchar(10)角色名称7系统实现本系统主要包括十一大模块,另外还有一个应聘系统作为本系统的附属系统使用,在每个模块中根据具体业务需求,分情况加入了相应的增删改查操作,以下将对这些模块的实现方法进行详细介绍。7.1各个模块实现(1)登录界面作为一个系统的入口,特别是企业中使用的需要一定保密程度的系统,对登录人员的验证是必不可少的,在本系统中,如果想要访问主界面,就必须要进行身份验证,本系统的登录界面如图所示,只有成功经过了验证,才能访问主界面,本模块对应数据库中的userinfo数据库,在输入账号和密码后,会由一个form表单提交给后台进行验证,后台处理文件为LoginServlet,在后台中使用request.getparameter()方法得到两个输入框中得到用户输入的信息,然后引入UserDao的实现子类UserDaoImpl,在登录时首先检查用户名密码是否正确,用户表中有无该用户,sql语句为:selectupasswordfromuserinfowhereuaccount=?。将输入的用户名和密码输入,如果没有得到User对象则登录失败。如果经过验证,登录成功时会新建一个user类,调用登录方法:select*fromuserinfowhereuaccount=?andupassword=?,从数据库中得到该账号的信息,如果返回的user不为空,则说明数据库中存在该角色,然后需要判断该帐号是否已被禁用,如果已经被禁用,则禁止该账户登录,调用session的session.setattribute()[13]方法创立会话,里面装有登录用户的信息,用来保持该账号的登录状态,以便进行其它操作。登录界面如图7-1所示。图7-1登录界面(2)系统主界面在成功验证了登录身份后,就能够进入到主界面,主界面由导航栏和左功能条组成,主页能够显示一条最新公告,主要功能模块都在主界面上显示,包括员工信息、应聘管理、部门信息等,左功能条则是考勤信息、公告系统以及资料共享系统,除此之为还为右上角能够显示登录人员的名称,显得更为人性化。在前台页面的构造中,使用了DIV+CSS的布局,这种布局的好处是能够把代码和显示格式分来,让编程人员能够专注于实现功能,而不用受到布局格式的干扰,使整个页面显得更为简洁,因为页面的导航栏和左功能条都是通用的,每个页面都要引入这两个模块,因此本系统使用两个jsp文件构建前台,一个是Top.jsp,一个是Left.jsp,在系统的每个前台页面中使用两条语句引入这两个jsp文件,达到页面复用的效果,实现代码如下。<jsp:includepage="Top.jsp"flush="true"/><jsp:includepage="Left.jsp"flush="true"/>这两条语句会引入每个页面所共用的Top和Left部分的jsp文件,不必再每个页面都重复的添加代码,如果需要修改界面,只需要修改一个,所有界面就会发生改变,不必再每个都作出修改,方便,提高了页面复用性,使前台页面的构造变得更加合理。主界面如图7-2所示。图7-2系统主界面图(3)员工信息员工信息管理是整个系统中最为核心,也是最重要的组成部分,员工在登录成功后,能够点击员工信息中的“查看个人信息”进行个人详细信息的查看,会展示出来用户的所有信息,如姓名、年龄、性别、政治面貌、籍贯、住址等等信息,本模块对应数据库中的userinfo数据库,如果需要修改信息,能够进入到“修改个人信息”页面进行修改。普通员工只能进行个人信息的查看和修改操作,管理员在验证身份后,则能够进入到信息综合管理中,查询某个员工的信息并进行详细信息的查看。该模块的实现过程是在前台加入一个form表单,并使用name属性将表单中的各个输入框中的内容加以标识,在Employee_info.jsp中使用session.getparameter()方法得到登录用户的实体类,然后使用UserInfoDaoImpl类中的方法进行实现,将数据保存到数据库中,如果需要输出数据,则调用findUserById()方法,实现的关键sql语句为:select*fromuserinfowhereuserid=?;使用preparedstatement中的setObject()方法传入数据,将问号替换为员工编号,sql语句处理结束后会返回一个User类,使用setAttribute()方法拿到对应的员工信息,在前台页面使用<%=user.getuserid%>语句拿到用户的所有信息,员工信息界面如图7-3所示。图7-3员工信息界面(4)应聘管理应聘管理也是系统的重要组成部分之一,因为人才的管理也是对企业未来生命的管理,如果企业不积极的引入人才,企业将会变得岌岌可危,这个模块是专门为管理人员设计,在点击时会触发身份验证的方法,该方法会判断操作者的身份,需要管理员或管理员以上的身份才能进入,普通用户无权进行操作,本模块对应数据库中的candidate数据库,能够保存应聘者的所有信息,管理员能够进行增加应聘信息的操作,在后台页面使用request.getparameter()方法得到输入的数据,使用CaididateDao中的实现类CandidateDaoImpl类中的addCandidate()方法,将数据存放到数据库中,还能够修改应聘信息,以及查看未处理的应聘信息、未经过的应聘信息、已录用的应聘信息,这些信息的分类实现方式为在显示的时候,会判断应聘表的处理状态。未处理的表单查询语句为:select*fromcandidatewhereispassed=1;未录用的表单查询语句为:select*fromcandidatewhereispassed=2;已录用的表单查询语句为:select*fromcandidatewhereispassed=3;本模块提供了删除操作,相应的操作都会进入到后台进行处理。应聘人员资料填写界面如图7-4所示。图7-4应聘资料填写界面图(5)部门管理本模块对应数据库中的department数据库,用来保存企业中部门的详细信息,包括部门名称、创立时间、负责人、电话等信息,员工只能进行部门的查看操作,管理员能够增加部门,以及修改部门信息的操作,本模块没有提供部门的删除功能,因为在员工信息表中引入了该表的外键,如果删除部门,会造成员工信息的数据异常,而且在调查中发现,解除部门这种现象在企业中极为少见,因此没有提供删除功能,只有修改功能,在部门管理界面还能够显示部门的员工数量,以及显示该部门员工的列表,实现语句为:selectCOUNT(userid)fromuserinfowheredepartmentid=?,该语句会统计出该职位的员工数量。部门模块的实现过程为在添加部门时,有一个form表单,会根据name属性记录输入的内容,后台会使用request.getparameter()方法得到这些值,然后调用DepartmentDao的实现类DepartmentDaoImpl类中的addDepartment()方法将数据插入到数据表中,进而实现整个部门模块的业务,界面如图7-5所示。图7-5部门信息界面图(6)职位管理本模块对应数据库中的position表,员工能够查看企业中所有职位的详细信息,如名称、创立时间、备注等,并能够进行查询操作,查询的sql语句为:select*frompositionwherepositionname=?。语句使用了preparestatement类,后面的问号在执行的时候会被preparedstatementd的setObect[]{},里面存放的变量经过下标代替,替换后就会变成能够让数据库执行的SQL语句,然后执行该语句,将数据存入到数据库中,管理员则能够添加企业的职位信息,以及修改职位信息。本模块没有提供职位的删除功能,在需求调查中发现,撤销某个职位的业务在企业中基本不存在,而且如果删除某个职位,那么引入这个外键的所有员工信息都将出现数据异常的情况,因此没有提供删除方法。在职位的管理界面能够查看到该职位共有多少名员工,而且能够点击查看对应员工的详细信息,职位管理界面如图7-6所示。图7-6职位管理界面图(7)薪资信息本模块对应数据库中的salary表,员工能够查看自己的工资记录,以及查询历史记录,管理员能够添加工资、查询某个员工的工资记录,本模块提供了工资记录的删除功能,能够对员工工资的记录进行删除操作,查询工资只能由超级管理员进行,因为在企业中,薪资是严格保密的,不能随便查阅,薪资的删除操作也只能由超级管理员身份来完成,因为管理员可能会有很多,如果管理员身份就能够进行工资记录的删除操作,可能会有人恶意删除薪资记录,造成数据丢失,可是删除功能是确实需要的,因此把删除权限开放给超级管理员,只有超级管理员能够进行薪资记录的删除操作。员工能够查看自己的薪资记录,管理员则能够进入数据录入界面,在录入工资的时候,能够查看到当月该员工的所有考勤信息,如请假时长、迟到次数、加班时长等,并能够根据这些信息,依靠奖惩办法录入工资,薪资录入界面如图7-7所示。图7-7薪资信息录入界面图(8)奖惩办法管理本模块对应数据库中的jc数据表,员工能够查询企业中对各种需要进行奖励和处罚的情况所作出的详细规定,管理员则能够进行增加奖惩办法、修改奖惩办法、删除奖惩办法的操作。本模块的实现过程是在页面中新建一个form表单,将需要输入的内容都包含在表单之中,经过name属性区分每个输入框输入的内容,在后台使用request.getparameter()方法取得输入的各个输入框中的内容,然后使用JcDao接口的JcDaoImpl实现类里的addJc()方法添加奖惩信息,记录奖惩信息时会自动生成添加时间,获得时间的语句为newSimpleDateFormat(“yyyy-MM-ddHH:mm:ss”).format(newDate());插入奖惩办法的sql语句为:insertjcvalues(?,?,?,?,?),newObject[]{};用preparedstatement中的setObject方法替换sql语句中的问号,并将数据存储到数据库中,奖惩信息录入界面如图7-8所示。图7-8薪资信息录入界面图(9)系统设置在此模块中,员工能够修改登录密码,在更改密码时需要输入原密码,而且两次输入新密码需要一致,管理员能够创立新账号为新员工使用,可是最高只能创立管理员身份的用户,这是考虑了系统数据安全问题后做出的实现方式,这样能够保证数据安全,如果任意管理员身份都能够创立超级管理员账号,会对系统数据安全造成隐患,如果需要创立超级管理员身份,就需要用超级管理员账号在权限修改界面将权限修改为超级管理员,管理员能够查看员工的权限情况,并能够最高修改为管理员身份,不能修改为超级管理员身份,能够对账号做出禁用操作,禁用的账号不能登录系统。实现方法为在form表单中输入需要修改的员工姓名,输入需要修改的身份,将数据提交到后台,使用preparedstatement的setObject方法将问号替换,执行修改操作,增加账号界面如图7-9所示。图7-9添加账号界面图(10)考勤系统本模块对应数据库中的attendance数据表,签到在每个企业中都是必须要有的一个功能,为此本系统加入了此模块,员工在每天进入到企业后,需要登录本系统,点击签到按钮进行签到,点击按钮时触发事件,在将签到信息保存到数据库时会进行验证,先查询该账号在当天的签到记录,如果查询到结果,证明该账号今天已经进行签到了,会提示用户不要重复签到,如果是当天第一次签到,则会获取签到时的时间,并保存到数据库中,并对签到时间做出判断,如果签到时间晚于早上9点,则认为该员工迟到,设置flag为0,并将这些信息记录到数据库中,员工能够进行签到操作,并能够按天和月份查询自己的签到信息,考勤记录是对员工进行综合考察的一项重要依据,因此本模块不提供考勤记录的修改方法,任何人都不能修改考勤信息,因此在删除考勤记录的权限方面只开放到了超级管理员,除超级管理员身份之外任何人不能删除考勤信息。本模块的实现方法为在员工登录后,点击“每日签到”,系统会在后台调用AttendanceDao的实现类AttendanceDaoImpl类中的AddAttendance()方法,该方法会首先执行一个新建日期的语句Format(“yyyy-MM-ddHH:mm:ss”).format(newDate());该语句会新建一个年月日时分秒格式的时间字符串,然后使用sql语句在数据库中查询:select*fromattendancerecordwhereattendancetimelike“?-?-?%anduserid=?”;使用preparedstatement.setObject()方法将年月日三个信息和userid传进去,如果返回有结果,则说明该账号当天已经进行过签到,会提示用户不要重复签到,如果没有查询到数据,则会加入一条记录,并判断时间是否晚于9点,晚点则视为迟到,实现的sql语句为:insertattendancerecordvalues(?,?,?,?);然后使用findAttedanceByMonthAndDate()方法查询记录,得到一个装有Attendancerecord的List<>对象,返回给前台后,前台用增强的for循环将List<>中的类取出来,并获得她们的属性,将结果展示在前台页面上,的考勤界面展示列表如图7-10所示。图7-10出勤记录信息列表图(11)请假系统本系统对应数据库中的leaves数据表,员工能够申请请假,并输入请假信息,包括离开时间、天数、理由等,在前台页面点击提交按钮,请假的表单就会以post方式提交,输入name属性,得到表单中各个数据的输入内容,调用LeavesDao层并使用多态[16]的方法,父类=new子类,将LeavesDaoImpl实例化,调用addLeaves方法将请假信息保平到数据库中,添加时的处理状态默认为未处理,在提交之后,会显示到待处理的请假信息表中,管理员登录系统后,能够查询所有未处理的请假信息,处理这些请假信息,能够允许或拒绝请假申请,更改ispassed为2或3,并会自动保存处理人的ID,还能够输入备注信息。请假信息申请界面如图7-11所示。图7-11添加请假界面图(12)加班管理本系统对应数据库中的extrawork数据表,加班情况在企业中是很正常的现象,为了记录这些信息,实现了这个加班信息的模块,员工能够添加加班信息,管理员能够查看所有人的加班信息,考虑到可能会有人记录虚假的加班信息,在本模块中提供了加班信息的删除功能,本系统把权限开放给了管理员,管理员能够查询某个人的加班信息,并能够对这些信息进行删除操作,加班信息填写界面如图7-12所示。图7-12加班信息填写界面图(13)公告系统本系统对应数据库中的news数据表,考虑到在企业实际运作的过程中,录入公告的不一定是管理员,公告的录入和发布工作可能由员工完成,因此把发布公告的权限开放给了员工,员工能够在这个模块中发布、查询公告、查看公告详情的操作。而且第一条公告会在系统主页中显示,为了保证公告内容的准确和安全,防止有人恶意修改公告,造成数据丢失,本系统没有实现公告的修改功能,至于公告的删除权限则开放到了管理员身份,管理员能够对公告进行删除操作,界面如图7-13所示。图7-13添加公告信息界面图(14)资料共享本模块对应的数据表是datum数据表,该表记录了资料的上传时间、上传者、存储路径等信息,和公告系统相同,企业内部任何人都能够上传资料,能够上传doc、docx、pdf等文件,上传的文件存放在apache的upload路径下,每个人都能够查询文件名称,选择文件进行下载,管理员能够对资料进行删除。本模块的实现方法为在目录中加入了一个开源工具包:smartupload,利用开源包里提供的方法实现文件的上传和下载,执行成功后,会将文件保存到tomcat[15]服务器中的upload文件夹中,并将上传人的信息、上传时间、文件名称等信息记录到Datum数据表中,管理员能够根据数据表中存储的记录进行文件的整理工作,在下载页面能够进行文件的下载操作,下载实现的方法为。filename=request.getParameter("filename");StringdownPath="upload/"+filename;su.downloadFile(downPath); 上传资料界面如图7-14所示。图7-14上传文件界面截图(15)通用功能打开计算器:在calcServlet中实现,点击按钮触发调用系统自带的calc.exe文件,然后文件开始执行,就能够完成打开计算器软件的操作,实现过程为新建一个Runtime对象,创立线程Process,用该进程启动需要启动的软件,关键语句为:processp=r.exec("calc.exe"),系统自带的应用不需要输入完整路径,输入exe文件名称即可执行,执行结束后系统自带的计算器程序成功运行,打开计算器界面如图7-15所示。图7-15打开计算器界面图7.2应聘子系统实现为了方便人事管理人员的资料录入工作,考虑到招聘工作非常繁忙,人事专员需要花费大量的时间对应聘资料进行录入,因此设计了企业人事管理系统的附加系统:应聘子系统,该系统和主系统的应聘表candidate共用一张数据表,可是页面不相同,应聘人员只能访问自己的信息页面,以及查看企业的因此要职位,和打开excel、计算器、word文档等通用功能,不能访问系统的主页面,此附属系统在界面上是独立于主系统的,而且这个系统会发布到互联网上,所有应聘者能够经过这个页面填写应聘信息,应聘人员能够在这个附属系统上注册账号,并能够登录系统,完善自己的应聘资料,在完善自己的资料后,点击提交,应聘者的信息会出现在主系统的应聘管理中的未处理表中,在进行处理后,状态改变,应聘者能够查看自己的录用情况。登录界面如图7-16所示。图7-16子系统登录界面图如果没有账号,可点击左下角的注册按钮注册一个账号,注册提交时会调用checkisExist()方法,检测该帐号是否已存在,如果已存在则无法注册,注册帐号界面如图7-17所示。图7-17应聘注册界面输入账号密码,验证成功后能够登录到主页面中,应聘人员能够填写自己的应聘资料,填写完毕后点击提交,则自己的信息将会出现在应聘管理的未处理表格中,人事人员在登录后,能够处理这些应聘信息,添加备注并能够修改处理状态,1为默认状态,未处理。2为未录用,3为已录用,状态更改后,应聘人员能够在应聘系统中看到结果,处理情况的界面如图7-18所示。图7-18应聘处理情况截图应聘人员能够随时修改自己的应聘资料,备注自己的个人技能等信息,应聘资料填写界面如图7-19所示。图7-19应聘资料填写界面图7.3关键方法(1)JDBCJDBC是系统和数据库交互的重要组成部分,如果需要使用JDBC让java代码和数据库之间传输数据,首先需要在项目的WebRoot目录下的WebInf,lib文件夹中加入JDBC驱动的jar包,在项目中导入,初始化Connection和PrepareStatement类,加载JDBC驱动,取得连接后用PrepareStatement中的exec方法执行输入的Sql语句,使用SetObject代替Sql语句中的问号,执行结束后根据所执行的语句判断是否需要返回值,如果没有返回值则方法会返回一个布尔类型的值去提交给系统使用,如果有返回值则用ResultSet接收,最后封装成为一个List<List<String>>对象交给调用方法处理,主要代码如下。Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=cpmns",sa,sa);(2)导航栏Tab切换特效的实现在鼠标移动到导航栏上的模块时,会自动显示该模块下对应的子模块的选项,本系统的实现方法是在Top.jsp页面中,建立一个主menu,下面的子选项则是7个小menu,初始时只有第一个menu能够显示,其它六个不显示,将其余六个子menu的display属性设为none,然后在主menu的七个<></li>标签中添加onmouseover(i)事件,当鼠标移动到主menu时触发这些事件,方法中有一个for循环,在判断鼠标在哪个主menu上,将对应的子menu的display属性设为block,然后在for循环里将其它子menu的display属性设为none,达到Tab特效的效果,关键实现代码如下。for(vari=1;i<=7;i++){if(i==num){document.getElementById("content"+i).style.display="block";}else{document.getElementById("content"+i).style.display="none";}(3)分页方法在系统运行时,必定会有大量的数据,如果这些数据都在同一页显示是很不明智的,这时就要用到分页方法,分页方法实现的思想是先在后台获得前台页面的页数属性,如果为空,则说明是第一页,将currentpage设为1,然后定义每一页显示几条数据,在这里定义了一个页面能够显示8条数据,intpagesize=8;然后在前台进行操作时,如果是上一页的操作,将currentpage减一,如果是下一页的操作,将currentpage加一,首页则把currentpage设为1,尾页则要先计算数据库中有多少数据,除以pagesize得到总的页面数,再返回最后几条数据即可,最后就是将得到的List返回给前台,关键的实现代码如下。intpageSize=3;intcurrPage=Integer.parseInt(scurrPage);inttotalPage=PageUtil.pageTotal(pageSize,count);List<UserInfo>list=uid.findInfoByPage(pageSize,currPage);request.setAttribute("list",list);(4)数据库通用类DBUtil数据库和系统的交互是经常需要被调用的,然而一次一次的重复写代码是效率非常低下的行为,为了提高代码的复用性,使代码变得简洁高效,在项目中创立了一个cpmns.cpy.dbutil的包,里面的DBUtil类实现了和JDBC交互的通用方法,首先将Connection和preparedstatement初始化为null,然后加载JDBC驱动,使用connection方法建立连接,和数据库得到连接后,执行sql语句,返回需要得到的结果集,最后关闭连接,完成整个交互过程,详细代码如下所示。ps=con.prepareStatement(sql);if(args!=null){for(inti=1;i<=args.length;i++){ps.setObject(i,args[i-1]);res=ps.executeQuery();(5)权限管理在企业管理系统中,权限管理是必不可少的功能,本系统的实现方法如下:在页面跳转的超链接后添加鼠标的onclick事件checkpower(n),方法的代码为。functioncheckpower2(rid){if(rid<2){alert("youhavenoroot");returnfalse;在session中得到当前登录用户的User实体类,取得rid后进行判断,如果小于对应操作需要的权限后,就会弹出“您没有权限进行该操作”的提示窗口,方法返回false值,取消发送请求,达到权限管理的目的。权限管理截图如图7-20所示。图7-20权限控制截图(6)签到功能员工在进行签到时,首先会到数据库中查找该员工当天是否已经签到,使用sessino.getattribute()方法得到当前操作的用户,得到当天日期的语句为:Stringdate=newSimpleDateFormat(“yyyy-MM-dd”).format(newDate())这样就得到了当天日期,在数据库中判断后,如果这个用户当天已经签到,则会提示用户不要重复签到,如果没有查到记录,则说明用户是第一次签到,记录了日期和用户ID后,会对是否迟到进行判断,获得当前签到的小时数,如果这个数字大于9,

温馨提示

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

评论

0/150

提交评论