还剩39页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
本科毕业论文题目企业工资管理系统的设计与实现姓名学号专业计算机科学与技术教学站点入学时间指导教师网络教育学院制年月日第一章绪论
1.1背景随着计算机技术的飞速发展,计算机在企业中应用的普及,利用计算机实现人事工资的管理势在必行利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;而工资管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理,同时计算机具有手工管理所无法比拟的优点例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等这些优点能够极大地提高人事工资管理的效率也是企业的科学化、正规化管理与世界接轨的重要条件不同的企业具有不同的人事、工资管理制度,这就决定了不同的企业需要不同的人事工资管理系统该企业以前的所有资料都是用人工来进行管理的,面对目前的实际状况,迫切需要开发一个新系统来适应这一些工作
1.2开发工具和运行环境的选择本系统采用b/s结构,即Brower-Server(浏览器-服务器)架构,B/S结构是目前最流行的数据库应用模式,它解决了各种分布式应用,扩展了业务范围;在B/S结构下,整个系统的管理、资源分配、数据库操作、业务逻辑部件的管理及动态加载等工作集中用服务器,容易部署和管理由于整个系统使用了B/S架构,在客户端使用标准的Web页面浏览器(如InternetExplorer等),不需安装特殊的应用程序,减少了升级和维护的难度,所有的业务数据都保存在服务器(Server)端,确保了业务的安全;在通讯方面,由于使用的是标准的Http协议,使得系统可以轻松的实现移动办公和分布式管理,同时,为系统与电子商务的整合与扩展打下了坚实的技术基础灵活的系统体系结构,以及对Internet技术的充分运用,保证了业务逻辑、界面表示的独立,使系统具有高可用性、可伸缩性和易扩展性B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库浏览器通过Web Server同数据库进行数据交互这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本TCO
1.3本文所做的工作第一章绪论部分绪论主要叙述课题提出背景、目前应用现状、分析比较当前开发工具,运用的技术第二章结合软件工程方法对系统进行需求分析、功能划分、数据流图设计,并结合数据库原理和功能划分进行数据库结构设计第三章概要设计,介绍了软件的总体设计和数据结构的设计第四章根据需求分析的结果,对系统进行详细设计,主要介绍每一个模块的具体功能和实现方法第四章毕业设计小结,总结部分介绍了系统设计中的不足和改进的方向,项目的展望第二章需求分析
2.1用户功能的需求分析
2.
1.1具体需求提供各项数据的录入,修改,查询功能包括部门信息,职工信息,工资的发放标准;自动生成每月的应发工资,由操作人员填入各项代扣代缴费用后,自动生成实发工资
2.
1.2系统维护提供简单的用户管理的功能,增加,删除用户,设置,修改用户口令为了兼顾安全性和方便性,在用户管理上针对不同的角色,实现不同的操作权限
2.2功能划分根据需求分析,将系统划分为5个功能模块,分别为用户登陆,系统管理,数据录入,数据查询,用户管理
2.3数据采集1.数据来源数据主要来源于职工,即职工是数据源,职工的基本信息,职务信息,可视登记表等作为数据源输入2.数据出路主要是反馈给各各部门领导,职工个人等
2.5数据库设计表和和视图描述表2-1表和视图表
2.表之间关系图2-7表关系图第三章概要设计
3.1总体设计
3.
1.1基本概念设计本软件是基于web的工资管理系统,开发结构为数据库/应用服务器/客户端的三层结构,即数据层/逻辑层/表示层,系统在J2EE平台上实现;考虑到实际情况,本系统的用户可能是财务管理者,也可能是普通职员,为了兼顾安全性和方便性,在用户管理上针对不同的角色,实现不同的操作权限
3.
1.2开发环境数据库服务器使用Oracle9i,客户端统一使用Web浏览器,向应用服务器的HTTP端口发请求表3-1开发环境表
3.
1.3系统结构系统的结构图如下所示图3-1系统结构图图3-1为管理员所能操作的功能,普通用户只能查看其中的数据查询和登录注销模块功能需求与模块的关系表3-2功能需求和模块表第四章详细设计
4.1登陆窗口设计图4-1登录窗口界面
4.
1.1功能说明工资管理系统第一个界面就是用户登录界面,该界面是用户想要登录本系统必须有的步骤,该界面登录时用户受权限限制,有管理员登陆和员工登陆员工登录时只有里面各项的查询功能管理员则有对里面各项的一切操作功能如果用户名或密码输入错误会出相应的提示信息用户信息的验证要求输入用户名和密码,并检查用户名和密码的正确性如果正确,则设定用户的使用权限,进入系统的主界面;如果错误,则提示用户继续输入,直到退出系统为止
4.
1.2实现方法首先链接数据库,要求用户输入用户名和密码,点击登陆,则读取用户表users,把用户输入的信息与用户表中的信息进行比较,如果正确,则进一步读取用户的使用权限到session里的username和scope,同时打开主界面;否则,给出提示信息重新进入登陆界面
4.2主界面图4-2主界面
4.
2.1功能说明用户操作的主界面,左边是功能菜单,列出了当前用户具有功能选项右边是主界面,具体的操作都在主界面实现
4.
2.2实现方法主界面有三个框架组成分别为titlemenumainTile中主要是系统名称,menu主要是一些功能按钮如职工信息录入,查询,修改;工资信息的查询录入和修改,报表生成等功能这些功能是随着用户的权限的变化而动态变化的如一般用户进入后就只有查询功能,没有录入的功能点击menu里的功能按钮后,在main框架中就会出现这个功能的具体操作,下面将详细介绍各个功能
4.3职工信息录入图4-3职工信息录入界面
4.
3.1功能说明实现职工的统一管理,进行职工信息的录入工作
4.
3.2实现方法用户录入各项信息后,进行客户端验证(JavaScipt)例如职工编号不能为空,出生日期不能有字母等为了增强程序的健壮性,客户端有可能禁用javascipt所以在服务器端最好也加上相同的验证经过验证以后合法的职工信息,将被存储在数据库中,存储成功后给出提示信息,并返回录入界面,如果存储失败,返回出错界面,给出提示信息新增时信息为用户登录名、用户密码、用户名称、用户部门(通过下拉菜单选择部门)、性别、年龄、身份证号码
4.4职工信息的查询和修改
4.
4.1功能说明给出检索条件(姓名,部门等),检索出职工的简要信息,点击查看后,给出职工的详细信息点击更改后,进入更改界面
4.
4.2实现方法查询条件,可以列出职工的所有信息,供检索,或者只列出职工主要信息,如姓名,部门等通过选中的信息主键,在后台程序中获取该数据的详细信息,并通过将信息返回到弹出框页面中,对主要信息进行修改操作修改时信息为用户密码、用户名称、用户部门(通过下拉菜单选择部门)、性别(通过下拉菜单选择部门)、年龄
4.5部门信息的管理
4.
5.1功能说明部门管理部门的功能有查询部门信息、添加部门信息、修改部门信息、删除部门信息等,实现了部门的统一管理
4.
5.2实现方法通过点击新增按钮实现对部门的基本信息(部门名称、部门说明、部门领导)等录入操作,在后台代码中获取创建人(系统操作用户)、创建时间(系统功能操作时间)、以及创建的状态(默认新增、修改为有效状态STATE=1删除操作时状态置为无效STATE=0)等信息点击保存按钮,将信息保存到数据库中
4.6职工工资信息的导入图4-6工资导入
4.
6.1功能说明为了减轻每个月对工资信息的手动录入工作,系统实现了工资批量导入功能系统管理员按照工资导入EXCLE模板,对工资信息整理到EXCEL表格中,使用此功能进行每月的工资批量入库工作,大大减轻了人力劳动,提高工作效率
4.
6.2实现方法按照格式输入需要导入的年份和月份,选择需要导入的工资信息EXCEL(模板为固定格式),点击提交按钮,后台程序会批量导入导入工资信息
4.7职工工资信息查看图4-7工资信息查看界面
4.
7.1功能说明职工工资信息查看功能主要实现了管理员对全部工资信息的统一管理以及用户对自己的工资信息的明细查看通过此功能可以约束职工工资的保密性,同时又对职工的工资有电子留档
4.
7.2实现方法根据登陆用户的角色判断用户是普通用户还是工资管理员,如果是普通用户则可以查看到本月的工资明细,也可通过查询功能按照年份月份查询以前的工资记录;如果为工资管理员则可以查看到本公司的所有的人的本月的工资明细,并可以通过查询功能按照用户、时间字段查询具体用户的具体时间的工资明细
4.8用户角色的创建及授权
4.
8.1功能说明通过不同的权限控制系统的不同功能工资管理员工资的批量导入、全部员工的工资明细管理、部门信息维护普通用户按照条件查询工资明细超级管理员工资的批量导入、全部员工的工资明细管理、部门信息维护、权限菜单配置、日志管理(登陆日志、操作日志)
4.
8.2实现方法点击创建角色,输入角色的基本信息,保存信息;通过【授权/除权】按钮对角色进行一级、二级权限的管理
4.9权限菜单的配置
4.
9.1功能说明将所有的操作功能通过配置的方式统一管理,并根据配置编码进行两级功能控制,实现了动态管理角色,动态配置菜单的效果
4.
9.2实现方法将已经开发完成的功能,按照规范编码进行配置,在用户登陆的时候,后台会根据用户获取角色,根据角色获取该角色有操作权限的菜单功能,并在系统中显示;无操作权限的菜单功能不在系统中显示
4.10日志管理
4.
10.1系统会在后台记录登陆时间以及登陆的IP地址,形成统一的登陆日志记录,超级管理员可根据登陆时间,进行具体的用户痕迹查看
4.
10.2系统会在后台记录每一个用户的操作日志,将每一次的操作时间、操作的功能记录,形成系统操作日志记录,超级管理员可根据操作时间,进行具体的用户操作记录查看
4.11过滤器和监听器
4.
11.1是否登陆过滤器当用户发送请求时,检查用户是否登陆,或者超过20分钟没有动作,则判断为session过期,自动进入重新登陆界面
4.
11.2编码过滤器使用gb2312编码,解决中文乱码问题
4.
11.3用户监听器毕业设计监听当前用户,产生日志记录登陆日志内容包括用户登陆时间、登陆IP地址等信息;操作日志内容包括操作模块、操作人、操作时间、操作模块的具体描述、详细备注详细设计第五章毕业设计小结
5.1目标完成情况和不足本软件通过努力,基本上完成了需求中的功能实现了工资和人事管理的初级应用由于时间限制,部分功能未纳入系统如报工资表的导入功能数据库设计方面由于较多地考虑到了各个库的相对独立性,在结构设计、完整性约束不是很规范另外变量名、字段名等命名也不规范无错误处理模块以及帮助系统由于本人在美学方面的欠缺,程序的界面不是非常美观程序中遇到的问题和解决办法1)由于用户登陆密码直接存放在数据库中,这样会暴露出用户密码,对系统的安全性造成很大的影响解决办法使用MD5加密工具对登陆密码进行加密处理2)由于系统对数据库操作比较频繁,而连接数据库不仅要开销一定的通讯和内存资源,还必须完成用户验证、安全上下文配置这类任务,因而往往成为最为耗时的操作解决办法使用tomcat的自带连接池多个请求共享一个连接,减少了连接数据库的开销3)代码优化方面,jsp代码中大量的使用scriptlet,使代码晦涩难懂,增加了代码的维护困难解决办法使用jstl标准的标签4)jsp页面的中文乱码问题解决办法由于每个页面都存在这个问题最后采用了一个监听器在监听器里把编码设为gb
23125.2项目展望这个项目虽然大致完成了预定要求,但是由于时间比较仓促,一些功能具体实现上可能还不能完全满足客户要求例如用户对自己的工资明细确认功能,多用户的集成测试等在下一版本的开发中,在这几个方便改进和提高毕业设计小结致谢当我敲完论文的最后一个字符,夜已经很深了,推开房门,站在阳台上,只见一轮明月高悬在夜空中,那银色的光洒满大地,世界显得如此宁静夜风吹过,让我的头脑顿时清醒,在这几个月的毕业设计过程中,我获得的每一个进步和收获,都凝结着恩师的辛勤培养和许多人的关心帮助在这里,我首先要衷心感谢恩师.整个论文工作都是在他的精心指导下完成的,望着这厚厚的论文,它的每一页、每一个符号都浸透着导师的心血和汗水谨以此文表达我对恩师最诚挚的感谢!致谢参考文献javadoc
1.
4.2作者CayS.HorstmannGaryCornell《CoreJava26eVolumeI:Fundamentals》机械工业出版社2003年10月1号作者JamesW.Cooper《JavaDesignPatterns》中国电力出版社2003年10月1日作者飞思科技产品研发中心《J2EE应用开发(WebLogic+Jbuilder)》电子工业出版社2003年7月1号作者DavidFlanagan《Javascript权威指南》机械工业出版社2003年1月1号作者BruceEckel《Java编程思想》,机械工业出版社,2002年9月第一版参考文献附录附录一数据库表的结构部门信息表(SYS_DEPT)用户信息表SYS_USER角色信息表SYS_ROLE用户角色表SYS_USER_ROLE菜单配置信息表SYS_RES角色权限表SYS_ROLE_RES工资表USER_WAGES登陆日志表LOGIN_LOG操作日志表(OPTION_LOG)附录二源代码
1.监听器(日志生成)packagecom.dragonsoft.pub;importjavax.servlet.ServletContext;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;importjavax.servlet.http.HttpSessionAttributeListener;importjavax.servlet.http.HttpSessionBindingEvent;importjavax.servlet.http.HttpSessionEvent;importjavax.servlet.http.HttpSessionListener;importjavax.servlet.http.HttpSessionActivationListener;importjavax.servlet.http.HttpSessionBindingListener;importjava.io.PrintWriter;importjava.io.FileOutputStream;publicfinalclassMySessionListenerimplementsHttpSessionActivationListenerHttpSessionBindingListenerHttpSessionAttributeListenerHttpSessionListenerServletContextListener{ServletContextcontext;intusers=0;//HttpSessionActivationListenerpublicvoidsessionDidActivateHttpSessionEventse{logoutsessionDidActivate+se.getSession.getId+;}publicvoidsessionWillPassivateHttpSessionEventse{logoutsessionWillPassivate+se.getSession.getId+;}//HttpSessionActivationListener//HttpSessionBindingListenerpublicvoidvalueBoundHttpSessionBindingEventevent{logoutvalueBound+event.getSession.getId+event.getValue+;}publicvoidvalueUnboundHttpSessionBindingEventevent{logoutvalueUnbound+event.getSession.getId+event.getValue+;}//HttpSessionAttributeListenerpublicvoidattributeAddedHttpSessionBindingEventevent{logoutattributeAdded+event.getSession.getId++event.getName++event.getValue+;}publicvoidattributeRemovedHttpSessionBindingEventevent{logoutattributeRemoved+event.getSession.getId++event.getName++event.getValue+;}publicvoidattributeReplacedHttpSessionBindingEventse{logoutattributeReplaced+se.getSession.getId++se.getName++se.getValue+;}//HttpSessionAttributeListener//HttpSessionListenerpublicvoidsessionCreatedHttpSessionEventevent{users++;logoutsessionCreated+event.getSession.getId+目前有+users+个用户;context.setAttributeusersnewIntegerusers;}publicvoidsessionDestroyedHttpSessionEventevent{users--;logoutsessionDestroyed+event.getSession.getId+目前有+users+个用户;context.setAttributeusersnewIntegerusers;}//HttpSessionListener//ServletContextListenerpublicvoidcontextDestroyedServletContextEventsce{logoutcontextDestroyed--ServletContext被销毁;this.context=null;}publicvoidcontextInitializedServletContextEventsce{this.context=sce.getServletContext;logoutcontextInitialized--ServletContext初始化了;}//ServletContextListenerprivatevoidlogoutStringmessage{PrintWriterout=null;try{out=newPrintWriternewFileOutputStreamD:\\Tomcat
5.0\\webapps\\abc\\defaultroot\\log.txttrue;out.printlnnewjava.util.Date.toString+::FormMySessionListener:+message;out.close;}catchExceptione{out.close;e.printStackTrace;}}}
2.过滤器packagecom.dragonsoft.pub;importjavax.servlet.Filter;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.FilterChain;importjava.io.IOException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;publicclassLoginFilterimplementsFilter{protectedFilterConfigfilterConfig;publicvoidinitFilterConfigfilterConfig{this.filterConfig=filterConfig;}publicvoiddoFilterServletRequestrequestServletResponseresponseFilterChainchain{HttpServletRequesthreq=HttpServletRequestrequest;HttpServletResponsehres=HttpServletResponseresponse;HttpSessionsession=hreq.getSession;Stringname=Stringsession.getAttributename;longnow=System.currentTimeMillis;longlast=longsession.getLastAccessedTime;try{ifname==null||now-last=120000*10{hres.sendRedirect../relogin.jsp;System.out.println用户未登陆或者操作超时;}elsechain.doFilterrequestresponse;}catchExceptione{System.out.printlne;}}publicvoiddestroy{/**@todoImplementthisjavax.servlet.Filtermethod*/this.filterConfig=null;}publicvoidsetFilterConfigfinalFilterConfigfilterConfig{this.filterConfig=filterConfig;}}指导教师评语指导教师(签字)答辩小组意见:组长(签字)成绩学院(盖章)年月日摘要本文从用计算机实现企业工资管理的角度出发,系统地介绍了为某企业设计的一套网络环境的工资软件本文详细叙述了系统的功能、数据结构、概要设计、详细设计系统实现了职工信息、工资的录入、查询和修改,用户管理等功能系统的特点是采用B/S架构,整个系统的管理工作都集中在服务器端,运用多层软件架构确保了系统的扩展性和适用性关键字工资管理系统,mysql server, tomcat
7.0AbstractThistreatisebasesonthemanagingofwagebycomputerandgenerallyintroducesakindofwagemanagingsoftwareaboutinternetenvironmentforacertainuniversity.Itdiscussesthefunctionsofthesystemdatastructuresummarydesigningandparticulardesigningindetials.Thesystemimplementstheinsertqueryoftheemployeesinformationandwagethereportsusermanagementandsoon.ThespecialtyofthesystemisusingB/Sstructure.Themanagementofthesystemfocusontheserver.Itusesseverallayerssoftwarestructuretoinsuretheapplicabilityandtheexpansibilityofthesystem.Theserverismostlyusingservletsandtheclientisjsp.KeyWords Themanagementsystemofwagethejavastoredprocedureoforaclethemoduleofwagecalculoation表格描述表格名称具体描述用户表SYS_USER用于记录职工个人信息部门表SYS_DEPT系统已建角色表SYS_ROLE系统已建权限表SYS_RES系统已建用户角色表SYS_USER_ROLE系统已建角色权限表SYS_ROLE_RES系统已建工资表USER_WAGES用于记录职工工资配置对象软件要求硬件要求网络环境内部局域网应用服务器Tomcat
7.04G内存100G硬盘数据库服务器Oracle11g4G内存100G硬盘数据库开发平台Windows开发工具MyEclipsePL/SQLDeveloperIE浏览器4G内存100G硬盘序号模块简称/简称模块名需求简要描述1LOGIN 用户登录根据登录的用户角色,显示不同的菜单项,限制普通用户的权限2QUIT退出系统阻止用户非正常退出系统,将用户保存在web应用服务器上的所有session删除3ROLE用户角色根据不同的用户角色,动态构造不同的菜单项目4M_USER用户管理管理除自己外的所有用户,包括删除,添加和修改,普通用户要使用该系统,必须由管理员创建登录名和密码5CHANGE_PASSWORD密码更改用户更改自己的密码6VALIDATIOON数据有效性校验(通用模块)通过给需要校验的表单元素增加扩展属性,就可以完成客户端表单数据的校验校验会给出合理的提示信息,并自动定位到不合理数据元素7DEPT_OPER部门信息维护部门信息的输入与修改8USER_OPER职工信息维护职工信息的输入与修改9PAY_OPER工资标准信息维护工资标准的输入与修改10QUERY_DEPT部门信息查询查询部门信息,并可操作数据11QUERY_TEACHER职工信息查询查询教师信息,并可操作数据12QUERY_PAY工资标准查询查询工资标准,并可操作数据13SUM_PAY统计工资按部门统计各项数据可按部门查询和个人查询,并统计各个部门的数据字段描述字段名称字长类型备注部门主键DEPT_ID32VARCHAR2部门名称DEPT_NAME100VARCHAR2部门说明DEPT_COMMENT512VARCHAR2部门领导DEPT_MANAGER32VARCHAR2创建人CREATE_USER32VARCHAR2创建时间CREATE_TIME19VARCHAR2字段描述字段名称字长类型备注用户主键USER_ID32VARCHAR2用户登录名LOGIN_NAME32VARCHAR2用户密码LOGIN_PASS32VARCHAR2用户名称USER_NAME100VARCHAR2用户部门DEPT32VARCHAR2性别SEX1VARCHAR2年龄AGE6VARCHAR2身份证号码SFZH18VARCHAR2创建人CREATE_USER32VARCHAR2创建时间CREATE_TIME19VARCHAR2字段描述字段名称字长类型备注角色主键ROLE_ID32VARCHAR2角色名称ROLE_NAME126VARCHAR2角色说明ROLE_COMMENT512VARCHAR2字段描述字段名称字长类型备注主键USER_ROLE_ID32VARCHAR2角色主键ROLE_ID32VARCHAR2用户主键USER_ID32VARCHAR2字段描述字段名称字长类型备注参数IDRES_ID2CHAR32参数名称RES_NAME64VARCHAR264参数编号RES_NUM32VARCHAR232父级资源PARENT_RES32VARCHAR232-1为顶级资源资源类型RES_TYPE1CHAR10-菜单;1-操作操作类型OPTION_TYPE1CHAR1排序编号SORTINTEGER状态STATE1CHAR10-无效;1-有效字段描述字段名称字长类型备注主键ROLE_RES_ID32VARCHAR2角色主键ROLE_ID32VARCHAR2参数主键RES_ID32VARCHAR2字段描述字段名称字长类型备注主键WAGES_ID32VARCHAR2身份证号码USER_SFZH18VARCHAR2基本工资BASE_WAGESINTEGER奖金INTEGER应减工资LOSE_WAGESINTEGER实际工资WAGESINTEGER工资日期WAGES_DATE19VARCHAR2字段描述字段名称字长类型备注登陆日志IDLOGIN_LOG_ID32VARCHAR2用户IDUSER_ID32VARCHAR2登陆时间LOGIN_TIME19VARCHAR2登陆IPLOGIN_IP32VARCHAR2记录时间LOG_TIME19VARCHAR2状态STATE1VARCHAR2字段描述字段名称字长类型备注操作日志IDOPTION_LOG_ID32VARCHAR2操作名称OPTION_NAME126VARCHAR2操作时间OPTION_TIME19VARCHAR2操作人OPTION_USER32VARCHAR2备注OPTION_COMMENT512VARCHAR2状态STATE1VARCHAR2。