首页 企业员工信息管理系统的设计与实现

企业员工信息管理系统的设计与实现

举报
开通vip

企业员工信息管理系统的设计与实现企业员工信息管理系统的设计与实现 本科毕业设计说明书 企业员工信息管理系统的设计与实现 EMPLOYEE INFORMATION MANAGEMENT SYSTEM DESIGN AND IMPLEMENTATION 学院,部,: 专业班级: 学生姓名: 指导教师: 2012年 5月25日 企业员工信息管理系统的设计与实现 摘要 现今互联网发展越来越迅速,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。因此在信息化科技飞速发展的今天,借助于电...

企业员工信息管理系统的设计与实现
企业员工信息管理系统的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 与实现 本科毕业设计说明书 企业员工信息管理系统的设计与实现 EMPLOYEE INFORMATION MANAGEMENT SYSTEM DESIGN AND IMPLEMENTATION 学院,部,: 专业班级: 学生姓名: 指导教师: 2012年 5月25日 企业员工信息管理系统的设计与实现 摘要 现今互联网发展越来越迅速,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。因此在信息化科技飞速发展的今天,借助于电脑,通过员工信息管理系统管理各部门职工,能为企业人力资源的管理者提供人性化的服务。同时也能为企业的员工提供一定的方便。 本系统具有多方面特点:系统功能完备,用户使用方便简捷,人性化的用户界面,安全保密设置齐全,大大减少了操作人员和用户的工作负担,提高了企业员工信息管理的工作效率和企业的信息化的水平。 本论文从员工信息管理系统的初步调查开始,详细介绍员工信息管系统的需求分析和数据流程分析,并进行了系统总体结构设计、数据结构和数据库设计、输入输出设计等。 关键词:J2EE,Mysql,struts2,企业员工信息管理 I EMPLOYEE INFORMATION MANAGEMENT SYSTEM DESIGN AND IMPLEMENTATION ABSTRACT Nowadays, the Internet development is fast, bringing people's work and life tremendous convenience with efficiently.Therefore, the rapid development of technology of information technology today, through the use of computers, employee information management system to manage the various departments and workers, to provide personalized service for corporate human resources managers.Also provides a convenience for the employees of the enterprise. This system has a various characteristics:The system function is complete, using conveniently, the customer interface humanization, the safety keeps secret a constitution well-found, reduced an operation the work of the personnel and customer burden consumedly.Raise the work efficiency of the business enterprise information management and the information-based level of the business enterprise. Papers from personnel management information system, the preliminary survey began detailed introduction of human resource management information system requirements analysis, and data flow analysis, and a system overall structure design, data structure and database design, input/output design, etc. KEYWORDS:J2EE, Mysql,struts2,Employee information management II 目录 摘要.................................................................... I ABSTRACT............................................................... II 1 绪论.................................................................. 1 1.1 课 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 来源 .......................................................... 1 1.2 研究目的 .......................................................... 1 1.3 研究意义 .......................................................... 2 2 方案论证.............................................................. 3 2.1 可行性要求 ........................................................ 3 2.1.1 经济可行性 .................................................... 3 2.1.2 技术可行性 .................................................... 3 2.2 需求分析 .......................................................... 9 2.2.1 系统用户 ..................................................... 10 2.2.2 系统功能需求 ................................................. 10 3 系统设计............................................................. 11 3.1 系统架构设计 ..................................................... 11 3.2 系统功能模块设计 ................................................. 11 3.2.1 登录页面 ..................................................... 11 3.2.2 模块分析 ..................................................... 12 3.3 业务实体设计 ..................................................... 16 3.4 设计域模型 ....................................................... 16 3.5 设计数据模型 ..................................................... 16 4 网站前台的设计....................................................... 19 4.1 网站登录界面的设计 ............................................... 19 4.2 员工信息管理界面设计 ............................................. 20 4.3 部门管理页面设计 ................................................. 22 4.4员工工资管理设计 ................................................. 24 4.5 员工考勤管理设计 ................................................. 24 4.6 用户密码修改模块的设计 ........................................... 26 4.7 退出系统模块的设计 ............................................... 26 5 网站模块功能的实现................................................... 27 5.1 用户登录实现 ..................................................... 27 5.2 员工信息管理模块实现 ............................................. 28 i 5.3 部门管理模块的实现 ............................................... 31 5.4 工资管理模块的实现 ............................................... 33 5.5 考情管理模块的实现 ............................................... 33 5.6 系统管理模块的实现 ............................................... 35 6 软件测试............................................................. 36 6.1 模块测试 ......................................................... 36 6.2 集成测试 ......................................................... 36 结论................................................................... 38 参考文献............................................................... 39 致谢................................................................... 40 ii 1 绪论 随着计算机技术、网络技术和信息技术的发展,现在办公系统更趋于系统化、科学化和网络化。网络办公自动化系统是计算机技术和网络迅速发展的一个办公应用解决方案,它的主要目的是实现信息交流和信息共享,提供协同工作的手段,提高办公的效率,让人们从繁琐的有纸办公中解脱出来。现在许多的机关单位的员工信息管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。 本系统就是基于本企业的员工信息管理而设计的,是对企业的员工信息资料进行管理,为人事管理人员提供了一套操作简单、使用可靠、界面友好、易于管理和使用的处理工具。本系统对人事各种数据进行统一处理,避免数据存取、数据处理的重复,提高工作效率,减少了系统数据处理的复杂性。本系统不仅使学院人事管理人员从繁重的工作中解脱出来,而且提高了人事管理的效率,提高了人事管理的科学性,方便了用户查询、管理人员进行管理。 在已跨入21世纪的今天,各个大中型企业,乃至小型企业都趋向于电子化智能化管理,不在止步于账本和笔,通过各种各样的软件管理系统,加快了企业的人员信息管理,同时也减轻了人们的工作压力。 1.1 课题来源 随着科学技术的发展企业公司已经迈入智能化、网络化,越来越多的事件都是通过网络来处理,所以一个应用于企业员工信息管理的软件也是越来越重要。通过这个软件可以很简单的对企业的员工基本信息资料、部门信息和员工考勤来管理,很大程度的提高了企业的人事管理的办事效率,同时也减轻了企业的工作压力。 近年来网络盛行,丰富的内容加上绚丽的页面,具有丰富的多媒体表现与互动特点,毋庸置疑, 网站已成为最吸引人的也最有效的信息传递手段和方式。 1.2 研究目的 为企业提供一个能够方便的管理员工信息的软件,可以实现公司对员工以及部门信息的操作,同时能够在此次的设计中有一个良好的锻炼过程。立志于为满足企业的需要,站在企业人事部门的角度考虑,完成此次设计。 1 1.3 研究意义 做一个企业员工信息管理系统,就是为了满足企业需求所定制的,所以他首先要做的是满足最基本得员工信息的增删改查,在此基础上进行功能的扩展,其次是部门管理,工资管理等等。 一个正规性企业都希望自己的员工管理非常合理,如此复杂性的操作如果通过人手动的写,会非常的麻烦。基于这一点考虑到设计一个管理类型的软件,来解决这个繁琐的问题,方便与企业的工作管理以及一些制度的规定。 在企业中,员工信息管理工作是非常重要的一项工作,它负责整个企业的日常人事安排,员工的人事管理等。高效的人事管理可以提高企业的市场竞争力,使企业具有更强的凝聚力和活力。为此,提高员工管理工作的效率,设计一套员工信息管理系统具有实际应用意义。 2 2 方案论证 2.1 可行性要求 开发任何一个基于计算机的系统都会受到时间和资源的限制。因此在开发软件项目之前,必须根据可利用的时间和资源等条件进行可行性研究。可行性研究工作的主要任务不是研究如何解决问题,而是要用最小的代价在最短的时间内确定该项目是否具有开发的可行性。 可行性研究主要包括经济可行性研究,技术可行性研究,运行、操作可行性研究,法律可行性研究和开发方案的选择。 典型的可行性研究应从以下几步进行。 (1)复查初步分析结果。对系统初步的分析结果和报告书进行复查,改正含糊或不确切的叙述,重新确定系统目标与规模,清晰地描述对系统的所有约束条件。 (2)研究现有的条件。找出其基本功能和基本信息,指出其缺点或局限性。 (3)导出新系统高层逻辑模型。用某种图形工具导出系统高层逻辑模型,并与现有系统进行比较。 (4)导出新系统的高层物理解法,提出多个供选择的解决方案,并对每一个方案的经济可行性、技术可行性、运行和操作可行性等进行分析比较。 (5)推荐建议的方案。如果系统分析员人为之得开发,则应指出开发的价值、推荐方案的理由,并为推荐的系统草拟一份开发 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 ,并提交可行性研究报告等全部文档。若分析员认为不值得开发,也应拿出充分的理由。 (6)评审、复审和决策。可行性研究最后要通过技术评审和管理复审,开发方和客户方或使用部门负责人根据成本-效益分析等各项可行性研究的结论决策是否继续这项工程。 而对于我的这次毕业设计来说可行性研究就是主要从两个方面考虑,一是经济可行性研究;二是自身的软件开发技术水平,即技术可行性研究。 2.1.1 经济可行性 开发一个本系统的开发可以解决企业人事管理遇到的耗费大量资金和人力,管理内容繁复,而且容易丢失的问题。本系统的开发周期为2个月,耗费资金较少,且实用价值很高,各类企事业单位及学校等部门都可以使用。 2.1.2 技术可行性 1、Mysql数据库 3 Mysql是一个快速、多线程、多用户的SQL数据库服务器, 其出现虽然只有短短的数年时间,但凭借着“开放源代码”的东风,它从众多数据库中脱颖而出,成为PHP的首选数据库。相比较其他数据库而言,Mysql可以称得上是目前运行速度最快的Sql语言数据库。除了具有其他数据库所不具备的功能和选择之外,Mysql数据库是一种完全免费的产品,用户可以直接从网上下载数据库,用于个人或商业用途,而不必支付任何费用,这也是我选择用Mysql数据库的主要原因,除此之外还具有以下主要特点: (1)Mysql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多地占用系统资源。用多线程和C语言实现的Mysql能容易充分利用CPU。 (2)Mysql可运行在不同的操作系统下。简单地说,Mysql可以支持Windows95/98/NT/2000以及UNIX、Linux等多种操作平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他操作系统下。 (3)Mysql有一个非常灵活而且安全的权限和口令系统。当客户与Mysql服务器连接时,他们之间的所有口令传送被加密,而且Mysql支持主机认证。 (4)Mysql支持大型的数据库。虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但Mysql可以方便地支持上千条记录的数据库。作为一个开放源代码的数据库,Mysql可以针对不同的应用进行相应的修改。 (5)Mysql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用而不必担心其稳定性。事实上,Mysql的稳定性足以应付一个超大规模的数据库。 2、开发技术的选择 1)J2EE (1)简化结构 J2EE平台支持简化的、基于组件开发模型,由于J2EE基于Java编程语言和J2SE平台,它提供了编写一次,随处运行的可移植性,遵循J2EE 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的所有服务器都支持该模型。 EJB组件使编写应用程序更为简单。尽管EJB体系结构复杂,但应用程序开发人员一般都必再编写访问系统服务的代码,EJB容器会实现系统级的服务,例如,事务、安全性等。 另外,J2EE还支持异构环境。基于J2EE的应用程序不依赖任何特定操作系统、中间件或硬件,因此,设计合理的基于J2EE的程序只需开发一次就可以 4 部署到各种平台,这在典型的异构企业算环境中是十分关键的。J2EE标准还允许客户订购与J2EE兼容的第三方的现成组件,把其部署到异构环境中,节省了由自己制订整个方案所需的费用。 (2)提高开发效率 由于组件技术的使用,可以按照开发人员的技能对应用程序开发进行分工,并行开发,提供整体开发效率。例如:图形设计师创建JSP模板,商业逻辑由该领域的专家完成,JSP页面和EJB由Java工程师完成,应用程序的装配和部署由团队中其他的成员完成,其中许多工作可以同时进行,有助于加速应用程序的开发。 (3)可移植性强 除了Java语言固有的可移植性外,EJB体系结构在Bean和支持该Bean的容器之间提供了一套标准化的应用程序编程接口,这使开发人员能够将Bean从一种操作环境移植到另一种操作环境,而无需重新编写其源代码。 (4)重用性好 由于在EJB模型中,各个软件组件都是严格分离的,因此,可以从现有的软件组件装配出服务器端应用程序,这与从现有的JavaBean可以装配出客户端应用程序一样,使软件能够重用。 (5)易于维护 基于组件的设计简化了应用程序的维护。由于组件可以被独立地更新和替代,通过更新应用程序中特定的组件,新的功能可以被很容易地增加。 (6)可伸缩性 企业必须要选择一种服务器端平台,以便满足那些在它们系统上进行商业动作大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上,例如,可被部署到高端UNIX或其他的大型机系统上。J2EE领域的供应商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署,实现可高度伸缩的系统,满足未来商业应用的需要。 (7)被广泛接受 主要的IT供应用商都采纳EJB体系结构,不同供应商的产品只要符合EJB体系结构,就都是可互操作的。 (8)保护投资 由于企业必须适应新的商业需求,充分利用现有的企业信息系统投资,而不是重新制定,全盘更新方案就变得尤为重要,这样,一个以渐进的(而不是激进的,全盘否定的)方式建立在现有系统之上的服务器平台是大多数公司所希望的。 5 J2EE架构可以充分利用用户有的投资,通过允许将现有的信息系统和资产“包裹”在J2EE应用程序中,不要求客户更换现有技术。事实上,在关系数据库中存储数据的企业,已经有了一套已具雏形的实体Bean,正等着通过EJB外壳去访问。 这之所以成为可能,主要是因为J2EE拥有广泛的业界支持和一些重要的“企业计算”领域供应商的参与,每一个供应商都对现有的客户提供了不用废弃自己已有投资的升级途径。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件运行,现有的操作系统和硬件也能被保留使用。 2)MVC模式 模型,视图,控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk,80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。MVC模式的好处各施其职,互不干涉。在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。有利于组件的重用分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。 MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征。这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易。 MVC结构提供了一种按功能对各种对象进行分割的方法(这些对象是用来维护和表现数据的),其目的是为了将各对象间的耦合程度减至最小。MVC结构本来是为了将传统的输入(input)、处理(processing)、输出(output)任务运用到图形化用户交互模型中而设计的。但是,将这些概念运用于基于Web的企业级多层应用领域也是很适合的。 在MVC结构中,模型(Model)代表应用程序的数据(data)和用于控制访问和修改这些数据的业务规则(business rule)。通常模型被用来作为对现实世界中一个处理过程的软件近似,当定义一个模型时,可以采用一般的简单的建模技术。 当模型发生改变时,它会通知视图(View),并且为视提供查询模型相关状态的能力。同时,它也为控制器(Controller)提供访问封装在模型内部的应用程序功能的能力。 一个视图(View)用来组织模型的内容。它从模型那里获得数据并指定这些数据如何表现。当模型变化时,视负责维持数据表现的一致性。视同时将用户要求告知控制器(Controller)。 控制器(Controller)定义了应用程序的行为;它负责对来自视的用户要求进行解 6 释,并把这些要求映射成相应的行为,这些行为由模型负责实现。在独立运行的GUI客户端,用户要求可能是一些鼠标单击或是菜单选择操作。在一个Web应用程序中,它们的表现形式可能是一些来自客户端的GET或POST的HTTP请求。模型所实现的行为包括处理业务和修改模型的状态。根据用户要求和模型行为的结果,控制器选择一个视作为对用户请求的应答。通常一组相关功能集对应一个控制器。 (1)各施其职,互不干涉 在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。假如业务发生了变化,如在取文章时可能webmaster把一些文章作了无效标志,不能直接把所有文章取出来,只能取出有效的文章,这时业务就发生了改变。再设想一下,如果这个业务逻辑在100个页面中都要用到,那么MVC模式就体现了它的灵活性。我们可以不更改任何JSP,只要更改model层中的相应类中的SQL语句即可。 (2)有利于开发中的分工 在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。 (3)有利于组件的重用 分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视力层也可做成通用的操作界面。 3)struts2框架的使用 此次程序中主要的是引入了Struts2和hibernate框架。传统的java web应用程序是采用jsp+servlet+javabean来实现的,这种模式实现了最基本的MVC分层,使得程序结构分为几层,有负责显示的jsp、负责流程逻辑控制的servlet、负责数据封装的javabean。但是这种结构仍然存在问题:如jsp页面中需要使用符号嵌入很多的java代码,造成页面结构混乱,servlet和javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等。于是便是首先出来了Struts。而Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离。 7 Struts2 框架由3个部分组成:核心控制器(FilterDispatcher)、业务控制器和用户实现的业务逻辑组件。核心控制器(FilterDispatcher)是Struts2框架的核心控制器,该控制器作为一个filter运行在web应用,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求;业务控制器组件就是用户实现Action类的实例;JavaEE应用里的模型组件,通常指系统的业务逻辑组件,而隐藏在系统的业务逻辑组件下面的可能还包含Dao、领域对象等组件,这也就是Struts2的模型组件,同时Struts2能使用JSP、FreeMarker、Velocity等作为视图技术。 Struts 2框架的大致处理流程如下: (1)浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。 (2) Control中的核心控制器FilterDispatcher根据请求调用相应的业务逻辑控制器(Action)。 (3)回调Action中的execute()方法,并在方法体内调用业务逻辑组件来处理请求(Model)。既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。 (4)返回响应,通过execute方法将信息返回到FilterDispatcher。 (5)查找响应,FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROR,将跳转到哪个jsp页面。 (6)响应用户(jsp--->客户浏览器端显示)。 4)Hibernate的使用 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。减低各个模块之间的耦合性。 5)Spring的使用 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真 8 正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如 声明 无利益冲突声明中华医学会杂志社职业健康检查不够规范教育部留学服务中心亲友住房声明 式事务、事务处理等。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。 3、 开发工具Myeclipse的选择 Eclipse 是一个IDE(Integrated Developing Environment),而这个IDE是允许安装第三方开发的插件来使自身的功能得到扩展和增强的,而Myeclipse就是其中的一种有名的插件集之一,MyEclipse将开发者常用到的一些有用的插件都集合起来,但它是收费的。 Eclipse是一个开放源代码,基于Java的可扩张的开发平台,多数人都是将Eclipse作为Java的集成开发环境使用,虽然Eclipse使用Java开发:但Eclipse不仅仅局限于Java开发,还可用于其它语言的开发,如C/C++;Eclipse是一个框架和一组服务,它通过各种插件来构建开发环境,因此只要提供支持C/C++ 插件便能进行相应语言的开发。 MyEclipse为Eclipse提供了一个大量私有和开源的Java工具的集合,这解决了各种开源工具的不一致和缺点。NitroX是一个繁杂而强大的加速Java Web应用开发的工具,还包含了一个强大且能够编译所有JSP和Struts Web应用的工具AppXRay。这些工具解析Java和XML配置文件。 MyEclipse的实际价值来自包含的发布包中的大量的工具。如 CCS/JS/HTML/XML的编辑器,帮助创建EJB和Struts项目的向导并产生项目的所有主要的组件如action/session bean/form等。还包含编辑Hibernate配置文件和执行SQL语句的工具。 2.2 需求分析 从一个企业的角度来设计这个网站,首先要了解用户需要什么,从这一点出发来把这个软件的内容填充起来。在满足用户的基础上对网站功能的一个丰富化,每当做完一个功能就站在客户的立场对功能进行评测,如果有需要改善的地方,则在慢慢的进行完善。 本软件主要是对企业的员工进行的一种管理,人员的工资,所属部门,考勤进行统一的管理。这里涉及到的不同的公司里面可能所需要的赏罚制度不一样所以就没有更多的进行。本系统就是一个架构原型,在此功能上可以更加的完善和美化。 9 2.2.1 系统用户 本系统有定义了两个用户,普通用户,管理员,不同用户能够执行的功能是不一样的,普通用户只能查看自己的信息,管理员可以对每个员工的信息,部门信息进行增删改查操作。 2.2.2 系统功能需求 (1)用户登录 用户在登录系统的时候首先是进入系统的登录界面,前面接受的用户名,密码以及所属身份权限去后台进行验证,如果用户名不存在返回登录页面,如果存在用户名则就验证密码,如果密码也存在就成功跳转到菜单页面,如果密码错误则返回登录页面,并提示相应信息。 (2)系统功能分析 本系统主要是考虑对公司人员的一个管理,从基本功能出发,首先是员工,其次是部门,再者是考勤,最后是工资。还有一个系统功能是用户来自己修改自己的登录密码。 员工:满足添加一个员工,对员工的增删改查等操作。在这里也可以对员工的身份权限和职位进行管理。在这里当添加一个员工的时候就为其分配了身份权限,以及记录了所对应的职位。每个员工在建立的时候都默认的为其分配了一个相应的用户名和密码,用户名就是为其分配的员工编号,密码开始默认为6个0。员工添加了以后,员工可以去系统用户管理界面对自己的密码进行修改以防止有人冒用。 部门:考虑到一个公司里面的部门可能是因为一些事情的原因,因而进行了某些变动,通过这里可以对部门进行修改。 考勤:公司里面难免少不了员工的迟到,缺勤等诸多事情,在这个时候考虑人事部此时要了解信息,并且对人员在进行合理的分配要做出一定统筹安排。 工资:不同的员工根据能力的不同因而给的报酬也相应的不同,从这里入手对员工工资进行一个管理。 10 3 系统设计 3.1 系统架构设计 我把整个系统划分为四大块,视图层,控制层,业务层,持久化层。 视图层主要负责向用户显示或者向后台传递数据,而控制层则是实现对前台数据传来的值进行判断和控制,通过与业务层之间的接口来实现数据的传入和传输,之间的通过单一接口来降低模块之间的耦合性。从而方便与代码的修改和后期的功能添加。 3.2 系统功能模块设计 系统功能模块划分如图3-1所示,主要分为员工信息管理页面、部门管理页面、考勤页面、工资页面和系统管理页面。 企业员工信息查询系统 部门管理 考 勤 员工信息管理 员工工资管理 系统管理 考考员员员部部登 勤勤工工工门门陆查登工添查查添密 看记资加找 找 加码 查修询 改 图3-1 企业员工信息管理系统功能模块图 3.2.1 登录页面 登录成功后进入主菜单页面,失败则返回登录页面,并且提示错误信息。页面根据登录人员的权限进入不同主菜单页面,只有管理员才能进行更多的操作,而普通用户只能进行少部分的操作。具体流程如图3-2所示。 11 开 始 登 录 N 验 证 Y 根据不同的权限进入不同菜单页面 图3-2 系统登录流程图 3.2.2 模块分析 1、员工信息管理设计 管理员可以对员工进行增删改查的操作,而普通用户只能进行查询。如图3-3所示。 全部员工信息查看 管理员用户 员工信息修改 员 工 信 员工信息删除 息 管 理 模 块员工信息添加 普通用户 自身信息查看 图3-3 员工信息管理功能模块关系图 12 (1)增加用户页面 对员工的基本信息进行添加,员工的基本信息如图3-4所示。 职员编号 职员姓名 民族 性别 家庭地址 文化程度 婚姻状况 职工基本信息 固定电话 出生日期 手机 部门号 入职时间 图3-4 员工基本信息E-R图 (2)员工信息查看 可以查看员工的信息,对员工的信息作相应的修改,并且能删除员工信息。 具体 流程如图3-5所示。 员工查找 详细查看 员工查看 员工信息管理 员工信息修改 员工信息删除 图3-5 员工查看流程图 2、部门管理设计 只有管理员才能对部门进行进行增删改查的操作。具体的部门信息如图3-6所示。 13 部门编号 部门名 部门电话 设立时间 部门经理 部门信息 图3-6 部门信息E-R图 部门的查看流程如图3-7所示。 部门查找 部门信息修改 部门查看 部门管理 部门删除 图3-7 部门查询流程图 3、 系统用户信息 这里不管管理员还是普通员工都可以修改自己的登录密码。密码修改流程如图 3-8所示。 14 密码修改 输入旧密码和新密码 修改成功 返回登录页面 图3-8 用户密码修改流程图 4、考勤页面设计 只有管理员有对员工迟到,早退,缺勤考勤登记的权限,普通员工的只有请假的 权限考勤进行增查改。如图3-9所示。 员工考勤查询 管理员用户 员工考勤登记 考 勤 管 理 模 块 自身考勤查看 普通用户 请 假 图3-9 考勤管理功能模块关系图 15 5、 工资管理 这个功能只有管理员才能够使用。本系统已经制定了赏罚制度,就是迟到扣除多少钱,早退扣除多少钱,等如此类的赏罚,本系统根据不同的职位设定的基础工资不同,在原有的基础工资上进行了进行赏罚。 对赏罚制度设定了一个算法,用来计算每个员工的工资。 3.3 业务实体设计 业务实体在内存中表现为实体域对象,在数据库中表现为关系数据。实现业务实体包括以下内容: (1) 设计域模型,创建域模型实体对象。 (2) 设计数据模型。 3.4 设计域模型 企业员工信息管理中用到的实体包括员工信息表(worker)、登录信息(login)、部门信息(department)、职位(job)、员工职位(staffjob)、考勤(duty)。具体含义如下。 员工信息表(worker):是一个员工信息的实体,包含的属性主要有员工姓名(workerName)、员工编号(workerCd)、民族(nation)、电话(telephone)、家庭电话(hometelephone)、家庭住址(address)、文化程度(educational)、婚姻状况(marriage)、出生年月(birthday)、性别(sex)、部门编号(deptcd)、入职时间(stime)。 登录(login)实体内容如下:员工登录账号(useId),员工姓名(useName)、员工登录密码(usePassword)、员工权限(use_flg)。 部门信息(department)实体的内容如下:部门编号(deptId)、部门名(deptname)、部门经理(deptmanage)、部门电话(telephone)、设立时间(deptime)。 职位(job)实体如下:职位id(managecd)、职位名(manage_name)、薪水(job_salary)。 员工职位(staffjob)实体如下:员工编号(staffcd)、职位编号(managecd)。 考勤(duty)实体如下:id(dutyId)、员工编号(workerCd)、员工姓名(workerName)、开始时间(duty_time1)、结束时间(duty_time2)、部门编号(deptId)、考勤状态(duty_type)。 3.5 设计数据模型 员工信息表(worker)、登录信息(login)、部门信息(department)、职位(job)、员工职位(staffjob)、考勤(duty)、在数据库中都有相对应的表。下面就详细说明各个表之间的关系,以及表所对应的属性。 16 员工表(worker)见表3-1。 表3-1 worker员工表 字段说明 列名 字段属性 null 键值 员工编号 workerCd varchar(50) no pk 员工名 workerName varchar(50) no 电话 hometelephone varchar(50) no 手机 telephone varchar(50) no 家庭住址 address varchar(50) no 性别 sex varchar(50) no 民族 nation varchar(50) no 出身年月日 birthday varchar(50) no 文化程度 educational varchar(50) no 婚姻状况 marriage varchar(50) no 入职时间 stime varchar(50) no 部门编号 deptcd varchar(50) no Fk 登录表(login)见表3-2,其中包括登录id,员工帐号,员工密码。 表3-2登录表 字段说明 列名 字段属性 null 键值 员工登录账号 useId varchar(50) no pk 员工姓名 useName varchar(50) no 员工登录密码 usePassword varchar(50) no 员工权限 use_flg varchar(50) no 部门表(dept)见表3-3,其中包括部门编号,部门名,部门电话,部门经理, 设立时间。 表3-3部门表 字段说明 列名 字段属性 null 键值 部门编号 deptId varchar(50) no pk 部门名 deptname varchar(50) no 部门经理 deptmanage varchar(50) no 部门电话 telephone varchar(50) no 设立时间 deptime varchar(50) no 考情表(dutytable)见表3-4,包括id、员工编号、开始时间、结束时间和考勤 状态。 17 表3-4考勤表 字段说明 列名 字段属性 null 键值 id dutyId int(100) no pk 员工编号 workerCd varcha(50) no 员工姓名 workerName varcha(50) no 开始时间 duty_time1 varcha(50) no 结束时间 duty_time2 varcha(50) no 部门编号 deptId varcha(50) no 考勤状态 jotaicd varcha(50) no 职位表(job)见表3-5,表中有职位id,职位名。 表3-5职位表 字段说明 列名 字段属性 notnull 键值 职位id managecd int(50) no pk 职位name manage_name varchar(100) no 薪水 job_salary varcha(50) no 员工职位表(staffjob)见表3-6,包含职工表号和职位id。 表3-6员工职位表 字段说明 列名 字段属性 notnull 键值 员工编号 workerCd varcha(50) no Fk 职位id managecd varcha(50) no Fk 18 4 网站前台的设计 4.1 网站登录界面的设计 一个企业的员工信息管理系统不会像普通的网站一样什么人都可以访问,只有内部员工才能具有访问的权限,因此网站的登录页面是必不可少的。通过登录能够分析出访问者的权限,系统根据权限给予不同的反馈。网站登录界面如图4-1所示。 图4-1 登录页面 登录页面里面有输入用户名和密码的text框,有控制登录权限的单选按钮,管理员单选按钮值为0,员工单选按钮值为1,也就是对应login表的use_flg的值。输入用户名和密码点击登录按钮,就会把前台的值传递给后台,后台去数据库里面进行验证。如果用户不存在,提示错误信息“用户不存在”,如图4-2所示。 图4-2 登录用户不存在 如果输入的用户名存在但是密码不正确的话,就会返回login页面并且提示错 19 误信息“密码不正确,请重新输入”,如图4-3所示。 图4-3 用户登录密码错误 如果后台验证功,则直接跳转到相应菜单页面,如图4-4 ,4-5所示。 图4-4 管理员登录正确跳转界面 图4-5 员工登录正确跳转界面 4.2 员工信息管理界面设计 只有管理员成功登录以后,在菜单上才有员工信息管理,员工信息管理有两个二级菜单。如图4-6所示。 图4-6 员工信息管理的二级菜单 员工查找页面如图4-7所示。有按职工号查询、按部门号查询、详细查看、员工信息修改、删除功能。 20 图4-7员工查看页面 员工的检索通过选择不同的单选按钮可以选择不同的检索方式,根据判断单选按钮的value值来调用不同的查询方法。两种查询都是精确查询,而不是模糊查询。当输入框的值为空时,检索所有员工的信息。 点击详细按钮可以对对应员工的详细信息进行查看,详细页面如图4-8所示。 图4-8员工信息详细页面 点击删除按钮首先会弹出删除确认窗口,当点击确认时可删除该员工的所有信息,如图4-9所示。 图4-9员工信息删除页面 点击更新按钮会跳转到更新页面,在更新页面除了员工工号不能修改外,其他信 21 息都可以修改,修改后点击“更新”按钮,该用户信息将保存并返回到查看页面。更新页面如图4-10所示。 图4-10 员工信息修改页面 想添加新员工信息可在员工信息管理二级菜单处点击“员工添加”,跳转到员工信息添加页面。该页面一共对三个表进行了操作,当一个员工添加时,不仅在员工基本信息表添加了该员工的基本信息,同时在login表也创建了该员工登录本系统的用户名,登录密码和登录权限,还在员工职位表添加了该员工所在职位的对应数据。员工添加页面如图4-11所示。 图4-11 员工添加页面 4.3 部门管理页面设计 本系统的部门管理页面同样只有具有管理员权限的才能对公司的部门进行相应 22 的操作。该模块中主要是设计对公司部门的添加,修改与删除。与员工信息管理模块一样,在部门管理的二级菜单下有部门查看和部门添加。如图4-12所示。 图4-12 部门管理二级菜单页面 部门查看页面有根据部门号和部门名查询两种检索方法,同时有对部门进行删除,更新的操作,如图4-13所示。 图4-13 部门查看页面 点击更新按钮就可以跳转到部门更新页面,除了部门号不能修改,部门的其他信息都可修改,然后保存。部门更新页面如图4-14所示。 图4-14 部门信息更新页面 23 4.4员工工资管理设计 员工工资查询页面,在该页面中,用户可以查询员工的工资。从图中可以看出该页面分为查询全部、选择个人查询以及按照部门查询。系统可以根据不同的查询条件 -15所示。 从数据库中查询出相应员工的工资,如图4 图4-15 员工工资查询页面 4.5 员工考勤管理设计 员工考勤管理主要是对员工的考勤信息管理,管理员和普通员工都有这部分的操作,不同在于两点,一是管理员可以查看所有员工的考勤情况,而普通员工只能查看自己的考勤情况;而是管理员可以对员工进行考勤登记,分别有登记员工迟到,早退,缺勤三种情况,普通员工只有请假的权力。菜单设计如图4-16,4-17所示。 图4-16管理员的考勤管理 图4-17 普通员工的考勤管理 24 管理员在对考勤查看时,为了方便,设计了按部门号查询的功能,这里只是加了这功能作为演示,当然为了更方便查询,可以设计按时间段查询,员工号查询等。其实现原理跟按部门号查询类似,只是改变关键字就行。以下是管理员考勤查看页面,如图4-18所示。 图4-18 管理员考勤信息查看页面 普通用户考勤查看页面,只能查看自己的出勤状况,所以只是简单地用表格显示相关信息,如图4-19所示。 图4-19 普通员工考勤信息查看页面 考勤登记页面如图4-20所示。 图4-20 考勤登记页面 普通员工的请假如图4-21所示。 25 图4-21 考勤登记页面 4.6 用户密码修改模块的设计 不管是管理员还是普通员工都有用户登录密码的修改页面。在这个页面,用户通过旧密码的输入,后台通过与session保存的登录密码相比对,如果不正确,会清空输入值,页面提示错误信息,新密码与确认密码之间也存在比对,不一致情况下也在页面提示错误信息,在这些比对都正确后才完成旧密码的更新,密码修改成功,这时跳转到成功页面。修改页面如图4-22所示。 图4-22 用户密码修改页面 4.7 退出系统模块的设计 用户点击退出系统以后,清空当前用户的登录信息,清空session里面的数据,然后跳转到登录页面。 26 5 网站模块功能的实现 5.1 用户登录实现 用户登录的实现主要用了if条件语句,不同条件下返回不同结果。条件是在 ,与传参数useId到daoLoginAction中通过个get()方法获取从页面传的Login对象u 层通过数据库的查找到的Login对象use1进行比对得到的bool型值。在action层与 dao层间,加了service层来降低模块之间的耦合度。 为了以后其他模块的操作,在action中我把用户登录的用户名,用户密码加入到 session中。以下是各层的代码。 LoginAction逻辑层处理: public String execute() throws Exception { ActionContext.getContext().getSession().put("id", u.getUseId()); ActionContext.getContext().getSession().put("password", u.getUsePassword()); ActionContext.getContext().getSession().put("name", u.getUseName()); ActionContext.getContext().getSession().put("useflg", u.getUseFlg()); Login user1=this.service.findUserById(u.getUseId()); Map request=(Map) ActionContext.getContext().get("request"); request.put("u",u); if (user1 == null){ this.addFieldError("ds","用户名不存在,请重新输入~"); return "error";} if(user1.getUsePassword().equals(u.getUsePassword())){ if((user1.getUseFlg().equals(u.getUseFlg()))&&(u.getUseFlg().equals("0"))){ return "success";} else if((user1.getUseFlg().equals(u.getUseFlg()))&& (u.getUseFlg().equals("1"))){ return "success1";}} this.addFieldError("aa", "密码不正确,请重新输入"); return "error";} jlchengServiceImpl业务层实现,主要是方法参数的传递。 private jlchengDao managementdao; public jlchengDao getManagementdao() { return managementdao;} public void setManagementdao(jlchengDao managementdao) { 27 this.managementdao = managementdao;} public Login findUserById(String id) { return this.managementdao.findUserById(id);} jlchengDaoImpl持久化层实现 public Login findUserById(String id) { Login user1=(Login)this.getHibernateTemplate().get(Login.class, id); return user1 ;} 5.2 员工信息管理模块实现 (1)用户的查询 因为员工查看页面需要打印出所有员工的信息,所以在菜单点击员工查看时就已 经触发了WorkerlistAction,这个action用来控制查询数据库中所有的员工,在dao层 用list来接受查询的结果,返回到action放入Map集合request中,在页面用 迭代器遍历然后打印出来。如下面是部分代码所示。 在dao层 public List findAllWorkers() {String hql = "from Worker us order by us.workerCd desc"; return (List) this.getHibernateTemplate().find(hql);} 在action层 public String execute() throws Exception{ Map request = (Map)ActionContext.getContext().get("request"); request.put("list", this.service.findAllWorkers()); return "success";} 在页面上部分代码 员工查询还有按员工号和部门号查询,通过SearchWorkerAction控制调用不同 service层的方法从而调用不同dao层的不同数据搜索语句。 SearchWorkerAction层代码: 28 public String execute() throws Exception{ if(search.equals("")){ return "searchAllWorker";} if(search_flg.equals("byWorkerCd")){ Map request = (Map)ActionContext.getContext().get("request"); equest.put("list", this.service.findByCd(search)); return "searchByCd";} if(search_flg.endsWith("byDeptId")){ Map request = (Map)ActionContext.getContext().get("request"); request.put("list", this.service.findByDeptId(search));} return "searchByDeptId"; } Dao层按员工号查询的方法 public List findByCd(String search) { String hql = "from Worker us where us.workerCd=?"; return this.getHibernateTemplate().find(hql, search); } Dao层按部门号查询的方法 public List findByDeptId(String search) { String hql = "from Worker us where us.deptId=?"; return this.getHibernateTemplate().find(hql, search);} (2)员工信息的查看 主要是通过在前台返回来的员工编号,然后去数据库里面进行详细的检索把检索 出来的值再以查询相同的形式传递出去。在这里值得一提的是,这里进行了多表查询, 然后把查询的结果统一用新定义的bean接受,然后返回到页面去。如下面代码中的 wd是bean里的WorkerDept类定义的对象,WorkerDept里的属性包含多个表里的属 性。 OneWorkerAction中的代码: public String execute() throws Exception{ WorkerDept wd=new WorkerDept(); Worker worker=this.service.findById(wo.getWorkerCd()); System.out.println(worker.getDeptId()); System.out.println(worker.getWorkerName()); Department dt=this.service.findBydeptid(worker.getDeptId()); System.out.println(dt.getDeptname()); 29 wd.setWorkerCd(worker.getWorkerCd()); wd.setWorkerName(worker.getWorkerName()); wd.setSex(worker.getSex()); wd.setAddress(worker.getAddress()); wd.setEducational(worker.getEducational()); wd.setMarriage(worker.getMarriage()); wd.setNation(worker.getNation()); wd.setBirthday(worker.getBirthday()); wd.setDeptId(worker.getDeptId()); wd.setHometelephone(worker.getHometelephone()); wd.setStime(worker.getStime()); wd.setTelephone(worker.getTelephone()); wd.setDeptname(dt.getDeptname()); Map request=(Map) ActionContext.getContext().get("request"); request.put("workerdept", wd); return "success";} (3)update更新员工信息 在这里不仅仅是可以对员工的基本信息进行修改,同时也可以对员工所在的的职位和登录权限进行修改,从上个用户信息页面到这个页面,仅仅根据传递的员工编号进行查找。这里涉及到了数据库的多个表之间的联系。员工信息表(Worker),部门表(deptartment),员工职位表(staffjob),Login表。这三张表之间有关的联系就是员工号这个属性,通过这个属性能把三张表联系起来,也就我们说的外键。比如我们重新设定了这个员工的权限,那么我们可以通过接收员工号数据库的Login表查找有关这个员工的数据,然后进行修改再保存。 (4)新员工信息添加 上面也提到过新员工的添加不仅对Worker表操作,同时Login表,Staffjob表也添加了新员工的信息,所以这也是对多表操作,也就要求我们在action中定义这三个表对应的对象,通过set()方法对这三个对象赋予值,在分别传到持久层调用save()来在表里添加新数据。下面是部分有关代码。 Action层 public String execute() throws Exception{ String name=new String(worker.getWorkerName().getBytes("iso-8859-1"),"utf-8"); String address=new String(worker.getAddress().getBytes("iso-8859-1"),"utf-8"); String education=new String(worker.getEducational().getBytes("iso-8859-1"),"utf-8"); 30 String marriage=new String(worker.getMarriage().getBytes("iso-8859-1"),"utf-8"); String nation=new String(worker.getNation().getBytes("iso-8859-1"),"utf-8"); String sex=new String(worker.getSex().getBytes("iso-8859-1"),"utf-8"); worker.setWorkerName(name); worker.setAddress(address); worker.setEducational(education); worker.setEducational(education); worker.setMarriage(marriage); worker.setNation(nation); worker.setSex(sex); login.setUseId(worker.getWorkerCd()); login.setUseName(worker.getWorkerName()); login.setUsePassword("000000"); sjob.setWorkerCd(worker.getWorkerCd()); this.service.saveWorker(worker); this.service.saveLogin(login); this.service.savaStaffjob(sjob); return "success";} 程序中有用到getBytes()方法,是用来解决中文乱码问题的,把从页面传过来的 值换成utf-8格式再赋予给对象,这就保证数据库里保存的不是乱码了。解决乱码问 题的方法有很多,这只是其中一种。 5.3 部门管理模块的实现 部门模块主要分为部门的添加和部门的查询,部门修改以及部门的删除。 (1)部门的添加 设计时把对部门的操作做了简化,只做了单表操作,所以部门的添加也就只是往 department表添加新数据。由AddDeptAction控制,下面是该action中的程序。 public class AddDeptAction extends ActionSupport{ private jlchengService service; private Department dept; public jlchengService getService() { return service;} public void setService(jlchengService service) { this.service = service;} public Department getDept() { 31 return dept;} public void setDept(Department dept) { this.dept = dept;} public String execute() throws Exception{ String manage=newString(dept.getDeptmanage().getBytes("iso-8859-1"),"utf-8"); String name=new String(dept.getDeptname().getBytes("iso-8859-1"),"utf-8"); dept.setDeptmanage(manage); dept.setDeptname(name); this.service.save(dept); return "success"; }} (2)部门的查询 按部门号和部门名查询部门的操作跟前面员工信息按员工号与部门号查询员工 的设计思想是一样,所以这里就不做详细说明,下面是部门查询的action层代码。 public String execute() throws Exception{ String sh=new String(search.getBytes("iso-8859-1"),"utf-8"); if(sh.equals("")){ return "searchAllDept";} if(search_flg.equals("byDaptId")){ Map request = (Map)ActionContext.getContext().get("request"); request.put("list", this.service.findByDeId(sh)); return "searchBydeId";} if(search_flg.equals("byDeptName")){ Map request = (Map)ActionContext.getContext().get("request"); request.put("list", this.service.findByDeName(sh)); }return "searchBydeName"; } (3)部门的信息修改和删除 这里如同前面的员工得查看和修改是一样的道理,首先根据从页面传递的部门号 查出对应的部门对象,再对这个对象做修改或删除操作。下面是部门修改的action层 代码: public String execute() throws Exception{ String manage=new String(dept.getDeptmanage().getBytes("iso-8859-1"),"utf-8"); String name=new String(dept.getDeptname().getBytes("iso-8859-1"),"utf-8"); dept.setDeptmanage(manage); 32 dept.setDeptname(name); this.service.updateDept(dept); return "success"; } 部门删除的控制层代码: public class RemoveDeptAction extends ActionSupport{ private jlchengService service; private Department dt; public jlchengService getService() { return service;} public void setService(jlchengService service) { this.service = service;} public Department getDt() { return dt;} public void setDt(Department dt) { this.dt = dt;} public String execute() throws Exception{ this.service.delete(dt); return "success";} } 5.4 工资管理模块的实现 工资的设定是由每个人的工资不同来决定的,每个职位都有自己的固定工资,在这个工资的基础上进行修改,即根据每个人的考勤不同来给定工资。 这里是早退和迟到是一次扣除五十元,缺勤是一次100元,如果是请假的话就不扣钱。 所以每个月是通过员工的考勤情况来决定工资的,通过从(paytable)考勤表里面找出员工的考勤状况,然后对考勤状况来判断员工的工资多少。 5.5 考勤管理模块的实现 (1)考勤的添加 数据库中有关考勤信息的只有考勤表,所以对考勤管理模块的设计也是单表操作。不管是管理员对员工考勤的登记还是普通员工的请假,都是对考勤表添加新数据。 public String execute() throws Exception{ Duty duty =new Duty(); 33 String name=new String(workerName.getBytes("iso-8859-1"),"utf-8"); String type=new String(dutyType.getBytes("iso-8859-1"),"utf-8"); duty.setWorkerCd(workerCd); duty.setWorkerName(name); duty.setDutyType(type); duty.setDeptId(deptId); duty.setDutyTime1(dutyTime1); duty.setDutyTime2(dutyTime1); this.service.saveDuty(duty); return "success"; } (2)考勤查询页面 进入考勤查询页面,就已经把所有的考勤信息搜出来了,而做的按部门号查询就 是为了缩小查询的范围。这个跟前面按部门号查询员工、部门一样的道理,只是查询 的表变成了考勤表。 下面是action层的操作: public class SearchDutyByDeptAction extends ActionSupport{ private jlchengService service; private String deptId; public jlchengService getService() { return service; } public void setService(jlchengService service) { this.service = service; } public String getDeptId() { return deptId; } public void setDeptId(String deptId) { this.deptId = deptId; } public String execute() throws Exception{ if(deptId.equals("")){ return "searchAllDuty"; 34 } Map request = (Map)ActionContext.getContext().get("request"); request.put("list",this.service.findDutyByDeptId(deptId)); return "searchBydeptId";}} 5.6 系统管理模块的实现 系统模块的设计只是做了一个登录密码的修改。在这里我用到了在做登录时保存 在session里的登录用户的密码。主要是为了与页面传的值做对比。 UpdatePasswordAction 中代码如下: public String execute() throws Exception { String id=(String)ActionContext.getContext().getSession().get("id"); String password2=(String)ActionContext.getContext().getSession().get("password"); if(olderpassword.equals("")){ this.addFieldError(ERROR, "请输入你的旧密码"); return "input"; } if(!olderpassword.equals(password2)){ this.addFieldError(ERROR, "旧密码不正确"); return "input"; } if(newpassword.equals("")){ this.addFieldError(ERROR, "请输入你的新密码"); return "input"; } if(password.equals("")){ this.addFieldError(ERROR, "请再次输入你的新密码"); return "input"; } if(newpassword.equals(password)){ Login login=this.service.findloginByid(id); login.setUsePassword(password); this.service.updatelogin(login); return "success"; } else{ this.addFieldError(ERROR, "再次输入的密码不正确"); return "input"; }} 35 6 软件测试 6.1 模块测试 模块测试1:登录功能的测试,当登录功能完成的时候,对其进行测试,主要有三次,第一次用户名错误的情况,第二次用户名正确密码错误的情况,第三次是用户名,密码,权限都正确的情况。 第一次输入用户名错误的时候,系统将会在前台下方提示“该用户不存在,请重新输入”。 第二次输入密码错误的时候,系统将会在前台下方提示“密码不正确,请重新输入”。 第三次如果你输入的密码和用户名都正确,则此时系统将会自动跳转。 模块测试2:员工信息添加页面,当我们录入一个员工的信息然后提交,如果真的添加成功则在员工查看页面能看见刚刚添加的新员工信息。 模块测试3:员工信息查询模块,输入已存在的员工号时,搜出该员工号的信息;输入已存在的部门号时,搜出这个部门的所有员工信息;输入为空时,搜出所有员工。 模块测试4:员工信息修改页面,对员工的基础信息,以及其工作,职位权限等都做相应的改动,然后通过员工查看界面查看,如果查看的值和我们修改过后的值一样,则恭喜功能实现。 模块测试5:员工信息的删除,这里所做的是检测的已经删除的数据会不会存在数据库中。选中要删除的一个员工,点击删除按钮,会提示删除成功,然后去查询一下是否还存在该员工,如果不存在则功能实现,反之则功能出错。 模块测试6:部门信息的添加,测试是否能在查询页面找到添加的部门。 模块测试7:部门信息的修改与删除,这里的测试方法与前面说的一样,如果测试成功则能在查询页面看到相应的数据改变。 模块测试8:员工的考勤添加与查看,测试输入一个员工缺勤、请假、迟到、早退等,然后去查询,看看是否正确添加了该员工的信息。如果成功则模块测试完毕。 模块测试9:用户密码修改,测试目的,在旧密码输入错的情况下,提示重新输入;在新密码与确认密码不一致情况下,提示错误信息,;在三个密码校验都正确下,密码修改成功,相对应数据库的值也修改成功。 从上面的模块测试来看,系统的模块功能都能与预期的值相同,模块功能成功实现。 6.2 集成测试 完成上面的模块测试以后,就是下面的集成测试阶段了。集成测试主要就是把各 36 个方法各个功能都测试一遍。主要流程如下: 首先管理员先能够成功登录,并且能够操作用户添加页面,添加一个新的员工,然后去员工查询页面进行查看,是否能找到刚才添加的,如果存在,点击旁边的查看按钮。此时应该跳到用户信息查看页面,点击下面的修改,测试修改是否能成功,如果成功以后再次查看该员工的信息,信息就像被修改的那样,就进行删除测试,点击旁边的删除按钮,提示删除成功并且在用户查询也找不到该员工的信息。 其次管理员对部门管理进行操作,添加一个部门并且查询,然后对部门做相应的修改,再次查询,成功后对这个部门执行删除操作,再次去查询该部门是否存在。 然后再对用户考勤进行管理,选择一个员工对其进行考勤信息的添加,然后再在考勤查询中查出该员工的考勤信息。考勤添加成功以后再去工资页面,首先查询一个考勤正常的员工,查看其工资,然后选择一个缺勤的员工再次查看他的工资是不是少点。 下面是用户对自己信息的一个查看,已经对密码的修改,管理员可以进入系统管理的个人信息管理中,查看自己的信息,并且尝试修改自己的密码。然后点击注销按钮返回登录页面,用已经修改过后的密码进行输入。 上面就是本系统的一整套的工作流程。因为是第一次设计企业人事管理所以在功能已经实现方面难免有些漏洞,以后会以此为模板对其一步一步进行优化改良。 37 结论 时间总是过得很快,一转眼就已经到写总结了。经过一个多月的系统架构设计,代码编写,企业员工信息管理系统终于按预期的想法完成了。由于是第一次个人完成的系统,所以在一开始设计时就没设计的很复杂,功能模块设计实现的比较少,数据库设计业比较简单,表不多,表之间的关系只有一对多的关系。在实现时做的最多就是单表操作。总体来说,系统的绝大功能都能实现,但每个功能模块也存在着很多可以更加完善的地方。比如员工信息管理的员工信息删除操作,只是对员工信息表的数据。其实对于这个功能我们还可以考虑级联删除,就对一个员工删除时,不仅要考虑到该员工的员工基本信息的删除,还要考虑到跟这个员工相关的其他表的数据的删除,如考勤表,员工职位表的数据。这样我们就可以避免数据库存储空间的浪费。 这次毕业设计做的企业员工信息系统尽管不是很够格,但因为做的很用心,所以他依然给我带来了好多收获。比如对开发工具Myclipse使用更加的熟练,让我了解到通过已经建好的表,Myclipse可以自动生成实体类和对应的hbm.xml文件。还有做的过程中遇到问题,积极、灵活解决问题的能力。在设计的工程中,遇到印象最深的问题就是中文乱码问题,刚开始以为是页面的问题,就着手改jsp页面的编码为utf-8,但问题没能解决,后来慢慢分析发现从页面传的值查入数据库中就成乱码,所以才明白是数据库乱码问题,通过网上搜索mysql数据库乱码问题找到了解决方法:用SET character_set_client='utf8';SET character_set_connection='utf8';SET character_set_results='utf8修改mysql默认编码格式,此外为了保险我还用getBytes()方法先把从页面传的值换成utf-8格式再查如数据库。这样乱码问题才最终解决。 总的来说通过此次设计不仅让我学到好多知识,巩固知识点同时让我意识到自己学的东西还很薄弱,还有很多的东西需要掌握,此次J2EE项目只是一个开始,以后走进公司还要面临更多更新的知识。所以,如何去最快的学习一样东西,如何利用手里的资源帮组自己最快最好地完成任务,也是一门技巧,相信还有很多值得我去学习。 38 参考文献 [1]乔普拉(JSP程序设计(北京:人民邮电出版社,2006( [2]耿祥义,张跃华(JSP使用教程(第2版)(北京:清华大学出版社,2007( [3]李刚(轻量级J2EE企业应用实战(北京:电子工业出版社,2008( [4]孙鑫.Struts2深入详解[M].北京:电子工业出版社,2009. [5]埃克尔(Java编程思想(第4版).北京:机械工业出版社,2007( [6]刘晓华.张健(JSP应用开发详解(第3版)(北京:电子工业出版社,2007( [7]刘晓华.精通Java核心技术.北京:电子工业出版社,2004. [8]耿祥义等.Java2实用教程.北京:清华大学出版社,2004. [9]薛为民.Java应用教程.北京:清华大学出版社,2005. [10]姜利群.Java网络编程实例教程.北京:清华大学出版社,2005. [11]朱福喜.Java项目开发与毕业设计.北京:清华大学出版社,2008. [12]李松林,陈清华(Eclipse宝典(北京:电子工业出版社,2007. [13]普雷斯曼(软件工程:实践者的研究方法(原书第6版)(北京:机械工业出版社,2007. [14]蒲子明,许勇,王黎等 .Struts 2+Hibernate+Spring整合开发技术详解.北京:清华大学出版社,2009. [15]王伟平 . Struts 2完全学习手册.北京:清华大学出版社,2011. [16]Gerald Post. Albert Kagan. Database management system:design consideration and attribute.2003. [17]John B.Miner,Donald P.Crane.Human Resource Management.Harper CollinsCollege Publishers.1995. [18]Paul C.Jorgensen.软件测试(原书第2版).北京:机械工业出版社,2003. [19]Donald Brown、Chad Michael Davis、Scott Stanlick. Struts 2实战.北京:人民邮电出版社,2010. [20]Java Open Source Programming.Joe Walnes,Ara Abrahamian,Mike Cannon-Brookes,Pat Lightbody.Indianapolis,Indiana:WileyPublishing.2004. 39 致谢 时间飞逝,大学四年的学习生涯即将结束,在这里我要感谢我母校安徽理工大学,感谢她给予我大学四年的学习机会,让我体会了大学生活的丰富多彩,有人说大学不仅仅是学习的天堂,也是培养个人能力的地方,我深有感触。 40
本文档为【企业员工信息管理系统的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_833902
暂无简介~
格式:doc
大小:244KB
软件:Word
页数:52
分类:工学
上传时间:2017-09-30
浏览量:83