jsp工资管理系统毕业设计说明书论文_第1页
jsp工资管理系统毕业设计说明书论文_第2页
jsp工资管理系统毕业设计说明书论文_第3页
jsp工资管理系统毕业设计说明书论文_第4页
jsp工资管理系统毕业设计说明书论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

页共29页1引言1.1项目背景随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的管理工具,不断改善企业的服务质量,提高工作效率。无论是行政职能,还是生产运作的管理要求的不断提高,在很大程度上使企业不得不改变传统的经营管理方式以适应快速发展的社会主义市场经济,改变企业管理方式、方法已经成为企业发展的先决条件。建设一个科学高效的信息管理系统是解决这一问题的必由之路。对企业内部的财务运用现代化技术进行管理,是提高工作效率的有效手段[1]。工资管理作为企业内部财务管理的一个重要方面,也逐步被企业管理者所重视,由于企业的规模的不断扩,大企业职工人数的不断增多,使工资发放成为企业管理中的一个重课题;再加上每一位职工的具体实际情况相同,规章章制度的不断完善,增大了个人工资发放难度;每个人每月的工资都要通过工资制度的审核,这大大增加了管理人员的工作量。工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。手工进行工资发放工作,需要反复地进行抄写、计算,不仅花费财务人员大量的时间,而且往往由于抄写不慎,出现张冠李戴,或者由于计算的疏忽,出现工资发放错误的现象。同时工资的发放具有较强的时间限制,必须严格按照单位规定的时间完成计算和发放工作。通过计算机管理系统对员工工资进行全面的统计与管理,全面解决了工资管理过程中所遇到的各种问题,并且克服了传统管理方式中的易出错等问题。工资管理系统成为企业现代化管理中的首选管理工具[2]。2.编程环境简介2.1JAVA语言简介Java是一种简单易用、完全面向对象、有平台无关性、安全可靠的、主要面向Internet的开发工具。Java自从1995年正式问世以来,它的速度发展已经让整个Web世界发生了翻天覆地的变化。随着JavaServlet的推出,Java在电子商务方面开始崭露头角,最新的JavaServerPage(JSP)技术的推出,更是让Java成为基于Internet从远端服务器传输到本地机上并执行的一种语言:是一种应用程序提供者不需要知道使用者的计算机硬件与软件环境的语言。比尔盖茨说过:"Java是最卓越的程序设计语言"[3]。Java自从问世以来,技术和应用发展非常快,在计算机、移动电话、家用电话等领域中无一没有java技术的存在。在Internet上,几乎每个网页都包含Java程序或代码。由于Java的广泛应用,使它受到了史无前列的关注,Java是一种Internet编程语言,Java还曾是网络动画技术的代名词,Java虚拟机更是让人耳目一新,Java简单易学,跨平台而又不失强大功能。相比其他语言,Java技术平台具有鲜明的优越性。从最初构造Java平台开始,就考虑了安全性的问题,即其安全性是建立在Java平台的内核中的。其他的语言只是在软件开发时才由用户自行处理安全问题,难免会有安全漏洞。其次,对于程序员来说,Java语言比以往其他的任何一门语言都好用,原因在于:Java有自动回收垃圾的功能,Java增加了对象和变量的强制类型检查,Java还取消了指针[4]。目前,Java技术的构架包括一下三个方面:J2EE(Java2PlatformEnterpriseEdition)企业版,是以企业为环境而开发应用程序的解决方案。J2SE(Java2PlatformStandEdition)标准版,是桌面开发和低端商务应用的解决方案。J2ME(Java2PlatformMicroEdition)小型版,是致力消费产品和嵌入式设备的最佳解决方案。J2EE目前已经成为开发商创建电子商务的事实标准。J2SE是Java2平台的标准版,它适用于桌面系统,提供CORBA标准的ORB技术,结合Java的RMI支持分布式互操作环境。J2ME提供了HTTP高级Internet协议,使移动电话能以Client/Server方式直接访问Internet的全部信息,不同的Client访问不同的文件,此外还能访问本地存储区,提供最高效率的无线交流[6]。Java技术又有以下广泛的内涵:1.首先,它是一门编程语言,Java能够创建所有其他传统语言能编写的应用程序,Java能够编写独立的应用程序,运行在装有Java虚拟机的操作系统上。Java编写的程序通常用在WWW环境中(比如applet,servlet等),Applet在浏览器中执行不需要操作系统JVM的支持。2.其次,Java还是一个开发环境,Java技术包含一系列的工具:编译器、解释器、文档生成工具、打包工具等。另外由Java2SDK提供的JRE(JavaRuntimeEnvioument)还包括一个完整的Java类集合,比如基本语言类、GUI空间类等[7]。3.最后,Java也是一个运行环境,我们可以从SUN公司提供的Java2SDK来搭建运行环境,而这一切都是免费的。时至今日,Java仍然一步步地朝着远大的梦想而迈进,显而易见的成果便是在国际互联网的应用,如今常见的浏览器也都全面支持JavaApplet以及衍生出来的JavaScript语言等,而市面上可见的操作系统,也利用Java的跨平台特性来开发,包括Windows系统、各类Unix和Linux、Mac等操作系统,都可以看到Java的综述[8]。这一切都充分说明了Java在计算机语言大家庭中的地位,Java对Internet编程的影响就如同C语言对系统编程的影响一样。2.2J2EE平台简介JAVA依照应用领域的不同,共分为三大版本,分别是J2EE、标准版本J2SE(Java2Platform,StandardEdition)、微型版本J2ME(Java2Platform,MicroEdition)。J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。在J2EE架构下,开发人员可依循规范基础,进而开发企业级应用;而不同J2EE供货商,同会支持不同J2EE版本内所拟定的标准,以确保不同J2EE平台与产品之间的兼容性。换言之,植基J2EE架构的应用系统,基本上可部署在不同的应用服务器之上,无需或者只须要进行少量的代码修改,即能大幅提高应用系统的可移植性(Portability)。J2EE主由SUN与IBM等厂商协同业界共同拟定而成的技术规范,以企业与企业之间的运算为导向的JAVA开发环境。J2EE架构定义各类不同组件,如WebComponent、EJBComponent…等,而各类组件可以再用(reuse),让已开发完成的组件,或者是经由市面采购而得的组件,均能进一步组装成不同的系统[10]。J2EE组成了一个完整企业级应用的不同部分纳入不同的容器(Container),每个容器中都包含若干组件(这些组件是需要部署在相应容器中的),同时各种组件都能使用各种J2EEService/API。2.3MySql数据库简介MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[11]。与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL不支持视图(已经被列入5.1版的开发计划)、事件等)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。MySQL可以使用命令行工具管理MySQL数据库(命令mysql和mysqladmin),也可以从MySQL的网站下载图形管理工具MySQLAdministrator和MySQLQueryBrowser。2.4开发框架2.4.1MVC模式MVC(Model-View-Contorller,模型一视图一控制器)是XeroxPARC在20世纪80年代为编程语言Smalltalk-80所发明的一种软件设计模式,至今已被广泛使用,最近几年被推荐为Sun公司J2EE平台的设计模式,其为开发交互式应用系统提供了一个优秀的设计模式,受到越来越多开发者的欢迎。MVC强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成三个核心模块:模型、视图和控制器(如图1-1),它们分别担负不同的任务[12]。图2.1MVC模型(1)视图视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。(2)模型模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。(3)控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。当Web用户单击Web页面中的提交按钮来发送HTML表单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示相应模型返回的数据。(4)MVC处理过程 首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。2.4.2Struts2框架Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。Struts2的控制器包括中心控制器、struts.xml和用户编写的Action。中心控制器是框架提供的,只需要在web.xml进行配置一次即可。用户在实现功能的时候,需要编写每个功能对应的Action(多个功能可以对应一个Action),然后在struts.xml中进行配置。如何实现MVC的控制其功能:从输入界面接收输入信息:该功能由框架完成,用户需要做的是Action中编写和输入界面中输入元素对应的属性,并提供set方法。框架从request中获取输入值,然后通过Action的set方法对属性赋值。选择调用业务方法,每个业务方法通常对应一个Action(通常是Action的一个方法),界面发送的请求与具体的Action的对应关系是在struts.xml中进行配置的。把值从控制器传递到界面,用户需要在Action提供相应的属性,并且提供get方法,具体的传值过程是由框架完成的。2.4.3Hibernate框架Hibernate是JDBC的轻量级的对象封装,它是当前比较流行的对象持久化技术,用hibernate可以将一个Java对象保存到数据库。它是一个独立的对象持久层框架,和ApplicationServer、EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动及数据库都有一定的关系,但是和使用它的Java程序、ApplicationServer没有任何关系,也不存在兼容性问题。以下是Hibernate的体系总览图。图2.2Hibernate的体系总揽图由于Hibernate比较复杂,提供了好几种运行方式。在轻型体系中,应用程序自己提供JDBC连接,并自行管理事务。这种方式使用了HibernateAPI的一个最小子集。(如下图)图2.3HibernateAPI的一个最小子集此处SessionFactory的含义为:单一数据库编译过的映射文件的一个线程安全的、不可变的缓存快照。它是Session的工厂,是ConnectionProvider的客户。可能持有一个可选的二级数据缓存,可以在进程级别后集群级别保存可以在事务中重用的数据。Session是生命周期的单线程对象,代表应用程序和持久层之间的一次对话。封装了一个JDBC连接,也是Transaction的工厂。保存有必需的(第一级)持久化对象的缓存,用于遍历对象图或通过标识符查找对象。2.4.4Spring框架Spring不但提供了一个功能全面的应用开发框架,本身还拥有众多可以在程序编写时直接使用的工具类,您不但可以在Spring应用中使用这些工具类,也可以在其它的应用中使用,这些工具类中的大部分是可以在脱离Spring框架时使用的。了解Spring中有哪些好用的工具类并在程序编写时适当使用,将有助于提高开发效率、增强代码质量。如Spring框架中的容器事务的管理,提供了一个轻量级的容器事务处理,针对的对象是普通的java类,使用Spring事务管理的话,你可以按照自己的业务把一些相关的方法纳入其事务管理里面,这就避免了程序员在处理事务的过程中繁琐的工作。(1)ICO机制 既控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。(2)AOP机制既面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。2.4.5JQuery技术JQuery是继prototype之后又一个优秀的JavaScript框架。它是轻量级的js库(压缩后只有21k),它兼容CSS3,还兼容各种浏览器(IE6.0+FF1.5+Safari2.0+Opera9.0+)。JQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。JQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。JQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可[12]。2.4.6AJAXAJAX指异步JavaScript及XML(AsynchronousJavaScriptAndXML)。AJAX的核心是JavaScript对象XmlHttpRequest。该对象在InternetExplorer5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术[13]。传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的webservice接口,并在用户端采用JavaScript处理来自服务器的响应。因此在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的用户端机器上完成,所以Web服务器的处理时间也减少了。使用AJAX的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。AJAX不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,AJAX应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着AJAX的成熟,一些简化AJAX使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能[14]。对应用AJAX最主要的批评就是,它可能破坏浏览器后退按钮的正常行为。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在AJAX应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在GoogleMaps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到AJAX元素上,以便将应用程序状态恢复到当时的状态[15]。)AJAX在浏览器与Web服务器之间使用异步数据传输(HTTP请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。AJAX可使因特网应用程序更小、更快、更友好。AJAX是一种独立于Web服务器软件的浏览器技术。3.系统分析本章主要详细描述了本系统即工资管理系统的需求分析。系统功能分析是在系统开发的总体任务的基础上完成的,开发管理系统能否依据一套科学的方法进行,这是系统开发成败的关键。本章任务将确定本系统分析的基本内容、功能流程分析等内容。3.1系统分析的基本内容确定项目系统的目的。该系统面向各类公司企业或者财务部门以及公司员工,可以方便地进行工资管理以及相关员工信息、职位信息还有管理员信息的管理。大大提高了企业办公效率,同时使工资发放简洁易于操作,同时可高效管理工资信息的汇总查询,使办公简便且公正明了。系统的总体结构描述。系统的逻辑结构,系统划分和功能定义,系统之间的接口定义。系统大致划分为四大模块,分别是:员工管理、职位管理、考勤工资管理和管理员管理。系统功能描述。编制有层次的各系统模块功能表。每个模块分别设置基本信息查询以及对信息的增加、删除和修改。数据输入输出描述。数据来源和业务分析,用输入/输出表描述系统数据输入输出关系。确定技术性能指标,包括可靠性、适用性、可维护性和可移植性。优化业务处理和流程,定义算法和模型。确定计算机系统配置,计算机网络技术方案。3.2需求分析需求分析是指用户系统必须满足的所有功能、性能和效率,包括功能需求、性能需求、可靠性需求、安全性需求以及可使用资源等方面的限制。需求分析的任务是确定系统的功能,明确用户的需求。该员工工资管理系统需要完成的功能主要有:系统的登录、退出;职位管理;员工管理;管理员管理;考勤工资管理;员工工资查询。4.系统设计4.1系统功能分析系统的登录、退出职位管理:员工职位信息的添加、删除、修改、查询。员工管理:员工信息基本录入(员工的工号、基本信息、基本工资、职位信息的录入)删除、修改、查询。考勤工资管理:员工工资的录入、以及工资的发放、查询。管理员管理:管理员信息的添加、删除、修改、查询。员工工资查询:员工通过工号、密码查询个人工资。系统功能结构图员工工资员工工资管理系统管理员管理职位管理考勤工资管理员工管理管理员管理职位管理考勤工资管理员工管理增加删除查询修改增加修改查询增加删除修改查询增加删除查询修改增加修改查询增加删除修改查询增加删除修改,查询图4.1工资管理系统功能结构图5.系统详细设计5.1系统登录模块此模块分为管理员登录模块和员工登录模块。系统为管理员用户和员工用户提供不同的登录界面。当用户在此登录界面输入用户名和密码,点击登录按钮进去登录系统,倘若为合法用户名和密码,则系统登录成功,进入不同的主界面。代码实现:publicclassLoginActionextendsBaseAction{ privateStringusername; privateStringpassword; @Resource privateAdminInfoDAOamdinInfoDAO; @Transactional(readOnly=true) publicStringexecute(){ if(username==null){ return"login"; } AdminInfoadmin=null; try{ admin=amdinInfoDAO.findByUsername(username); if(admin==null){ request.put("loginFlag",1); return"login"; }else{ if(!admin.getPassword().equals(password)){ request.put("loginFlag",1); return"login"; } } session.put("admin",admin); }catch(Exceptione){ e.printStackTrace(); return"error"; } return"success"; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; }}5.2职位管理模块此模块主要是提供员工职位信息,包括职位信息的增、删、改、查。新增职位如图:图5.1新增职位基本信息录入重要字段介绍:职位名:岗位名称,必填,表面该员工职位信息岗位补贴:每月工资计算时,岗位补贴金额备注:可以根据具体情况录入相关信息5.3员工管理模块(1)此模块新进公司员工基本信息的录入,包括员工唯一编号、真实姓名、住址、基本工资、年龄、密码、性别、电话、职位以及备注,如下图所示:图5.2员工基本信息录入该页面利用jQuery插件,以及ajax技术进行校验。其中员工的唯一编号可根据当日日期自动生成前八位,后三位手动输入,大大方便了员工工号的管理,同时保证了编号编写的科学性,准确性。重要字段介绍:员工唯一编号:系统根据当前年月日默认填充当前年月日(8位数字),管理员须增加三位随机数,以保证工号的唯一性,如果工号已存在,则会提示管理员。密码:员工可以通过工号和密码查询个人工资。基本工资:通过基本工资与考勤结算月薪。职位:所在职位,职位不同,职位补贴不同。(2)员工信息查询:如下图所示:图5.3员工信息表该页面可以通过工号、姓名关键字模糊查询匹配员工信息以及查询全部员工信息。还可以在显示信息点击操作栏编辑(修改)与删除员工信息。模块核心代码实现:publicclassEmployeeAction{ privateintpage=1; privateStringname; privateStringjobnum; privateintid; privateList<Employee>employees; privateintmaxPage=1; privateintpageSize=2; privateEmployeeemployee; @Resource privateEmployeeServiceemployeeService; publicStringsave()throwsException{ employeeService.save(employee); return"save"; } //查询员工信息 @Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED) publicStringsearchAll()throwsException{ employees=employeeService.findAll(); return"searchAll"; } //删除员工信息 publicStringdelete()throwsException{ employeeService.deleteById(id); return"delete"; } //分页查询员工信息 publicStringfindPage(){ try{ employees=employeeService.findPage(page,pageSize); maxPage=employeeService.countMaxPage(pageSize); return"findPage"; }catch(Exceptionex){ ex.printStackTrace(); return"error"; } } //根据ID查询员工信息本系统对员工信息以及工资的查询都实现了模糊查询,这是本系统的一大特点,极大的方便了查询,是查询功能更加细化,更加快捷,同时更符合现代化办公特点。 publicStringload()throwsException{ employee=employeeService.findById(id); return"load"; } //模糊查询模糊查询大大提高了查询速度,方便管理。 publicStringsearchByNameAndJobnum(){ try{ employees=employeeService.searchPage(jobnum,name,page,pageSize); maxPage=employeeService.totalPages(jobnum,name,pageSize); return"searchByNameAndJobnum"; }catch(Exceptionex){ ex.printStackTrace(); return"error"; } } publicEmployeegetEmployee(){ returnemployee; } publicvoidsetEmployee(Employeeemployee){ this.employee=employee; } publicintgetPage(){ returnpage; } publicvoidsetPage(intpage){ this.page=page; } publicList<Employee>getEmployees(){ returnemployees; } publicvoidsetEmployees(List<Employee>employees){ this.employees=employees; } publicintgetMaxPage(){ returnmaxPage; } publicvoidsetMaxPage(intmaxPage){ this.maxPage=maxPage; } publicintgetPageSize(){ returnpageSize; } publicvoidsetPageSize(intpageSize){ this.pageSize=pageSize; } publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicStringgetJobnum(){ returnjobnum; } publicvoidsetJobnum(Stringjobnum){ this.jobnum=jobnum; }5.4考勤工资管理模块(1)考勤工资信息录入,如下图所示:图5.4考勤信息录入表重要字段介绍:所发放月份:系统会根据当前年月,取上一个月份。该规定鉴于现行工资发放标准,如需提前结算可根据考勤天数与实到天数进行计算。且计算公式隐藏,为系统录入默认标准。员工工号:员工唯一标识,通过该工号查取改工号所对应员工信息。具体操作:输入工号后,点击如图箭头所指的按钮,查询出员工姓名、基本工资、岗位补贴。如果为查出记录系统会提示:“没有该工号”;查询信息还会根据所发放月份判断该员工当月信息是否已录入,如果未录入,员工姓名、基本工资、岗位补贴会显示所查询出来对应的信息;如果已录入,会提示:工号:******该月的工资已添加,请换去工号!当输入工号后,查询出员工姓名、基本工资、岗位补贴信息后,录入该员工考勤信息(考勤应到天数,考勤实到天数),点击计算当前员工工资按钮。会根据员工的(基本工资+岗位补贴)*(考勤应到天数/考勤实到天数)公式,计算出工资实际发放金额。最后点击保存录入到考勤工资表中。(2)考勤工资信息查询,页面如下图所示:图5.5考勤信息查询表该页面可以根据检索框信息(查询年月、工号、姓名)模糊查询工资发放信息,如果不填写默认查询所有信息。如果填写发放年月,会查询出当月所有员工信息,并且检索框最后会查询出当月所发放工资的汇总信息(不包括未发放信息)。如上图最后一天信息所示,改员工只是录入工资考勤的信息,且操作栏还可以进行编辑(修改考勤天数,不可修改工号),以及发放工资,点击发放后,会像前两条信息操作栏显示“已发放”,且不可以编辑。模块核心代码实现:publicclassAttendancewanceAction{ privateIntegerid; privateintpage=1;//页 privateintmaxPage=1;//最大页 privateList<Attendancewage>attendancewages; privateintpageSize=10;//一页显示多少跳 privateStringyearmonth; privateStringjobnum; privateStringname; privateDoublesumMonthSalary; privateAttendancewageattendancewage; @Resource privateAttWanceServiceattWanceService; //保存 publicStringsave()throwsException{ attWanceService.save(getAtt()); return"save"; } //页面跳转 publicStringfindPage(){ return"findPage"; } //检索查询 publicStringsearch()throwsException{ Datedate=null; if(yearmonth!=null&&!"".equals(yearmonth)){ try{ date=newSimpleDateFormat("yyyy年MM月").parse(yearmonth); }catch(ParseExceptione){ e.printStackTrace(); } } attendancewages=attWanceService.findPage(jobnum,name,date,page,pageSize); maxPage=attWanceService.totalPages(jobnum,name,date,pageSize); sumMonthSalary=attWanceService.sumMonthSalary(date); return"search"; } //修改 publicStringupdate()throwsException{ attWanceService.update(id); return"update"; } //根据id查询出员工考勤工资信息图5.6个人工资查询在查询页面可以按年月查询或工号查询以及姓名查询,只要输入其中之一即可完成模糊查询,当全部输入信息时可完成具体查询。 publicStringload()throwsException{ attendancewage=attWanceService.findById(id); SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月"); yearmonth=sdf.format(attendancewage.getYearmonth()); return"load"; } privateAttendancewagegetAtt(){ Attendancewageattendancewage=newAttendancewage(); attendancewage.setId(this.attendancewage.getId()); attendancewage.setEmployeeJobnum(this.attendancewage.getEmployeeJobnum()); attendancewage.setEmployeeName(this.attendancewage.getEmployeeName()); attendancewage.setEmployeeSalary(this.attendancewage.getEmployeeSalary()); attendancewage.setHostAllowance(this.attendancewage.getHostAllowance()); attendancewage.setSalary(this.attendancewage.getSalary()); attendancewage.setYddays(this.attendancewage.getYddays()); attendancewage.setSddays(this.attendancewage.getSddays()); attendancewage.setType(this.attendancewage.getType()); Datedate=null; try{ date=newSimpleDateFormat("yyyy年MM月").parse(yearmonth) }catch(ParseExceptione){ e.printStackTrace(); } attendancewage.setYearmonth(date); returnattendancewage; } publicAttendancewagegetAttendancewage(){ returnattendancewage; } publicvoidsetAttendancewage(Attendancewageattendancewage){ this.attendancewage=attendancewage; } publicStringgetYearmonth(){ returnyearmonth; } publicvoidsetYearmonth(Stringyearmonth){ this.yearmonth=yearmonth; } publicintgetPage(){ returnpage; } publicvoidsetPage(intpage){ this.page=page; } publicintgetMaxPage(){ returnmaxPage; } publicvoidsetMaxPage(intmaxPage){ this.maxPage=maxPage; } publicList<Attendancewage>getAttendancewages(){ returnattendancewages; } publicvoidsetAttendancewages(List<Attendancewage>attendancewages){ this.attendancewages=attendancewages; } publicintgetPageSize(){ returnpageSize; } publicvoidsetPageSize(intpageSize){ this.pageSize=pageSize; } publicIntegergetId(){ returnid; } publicvoidsetId(Integerid){ this.id=id; } publicDoublegetSumMonthSalary(){ returnsumMonthSalary; } publicvoidsetSumMonthSalary(DoublesumMonthSalary){ this.sumMonthSalary=sumMonthSalary; } publicStringgetJobnum(){ returnjobnum; } publicvoidsetJobnum(Stringjobnum){ this.jobnum=jobnum; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name;5.5管理员管理模块此模块主要功能是管理管理员信息,包括对管理员信息的增加,删除和修改,管理员可以进行的操作有对员工信息的增删改查,编辑职位列表,进行工资管理等功能。为了更好地进行员工工资管理事宜,特将该系统设置为可以添加多个管理员,但是管理员又区分为系统管理员和普通管理员,且只有系统管理员才可以对管理员进行增删改查操作,普通管理员不显示该菜单。图5.7系统管理员列表图5.8系统管理员信息录入图5.9普通管理员无管理员管理列表5.6员工个人工资查询模块此模块是员工通过自己的工号,以及员工密码来登录员工工资查询系统来查询个人工资信息。进入到页面首页即可见该员工工资详细列表,包括员工工号、真实姓名、发放工资年月、考勤应到天数、实到天数、基本工资、岗位补贴以及根据以上信息计算出的实际发放金额。员工工资查询模块只可以实现个人基本工资信息查询,不能进行任何操作,其他信息的登记应有专业管理人员进行数据录入以及维护。图5.10员工工资查询界面6结论在老师及同学们的帮助下,经过将近三个月的努力,本毕业设计—基于Java的员工工资管理系统,终于顺利完成了。本系统以MyEclipse为开发工具,系统的主要功能是通过Java语言来实现的,在实现过程中主要后台主要由SSH2框架进行数据访问与业务处理,前台展现主要用了HTML/CSS/JS/以及Struts2标签来展现数据,以及用了JQuery插件校验表单,和JQuery本身的Ajax技术使页面无刷新的情况下,实现页面的局部刷新。本员工攻击管理系统主要由管理员登录退出模块、职位管理模块、员工管理模块、考勤工资管理模块、管理员管理模块、员工个人工资查询模块组成。通过这些模块可

温馨提示

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

评论

0/150

提交评论