毕设企业工资管理系统的研究生开题报告怎么写写

工资管理系统毕业设计开题报告_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
工资管理系统毕业设计开题报告
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢学校工资管理系统,(需求分析,任务书,开题报告,E-R图,数据业务流程图,文献综述,毕业设计论文)_百度知道
大小:2.21 MB
所需财富值:0
已经过百度安全检测,请放心下载 工资发放和计算企业工资管理系统设计-VB(开题报告+源代码+毕业论文+答辩PPT)
 工资发放和计算企业工资管理系统设计-VB(开题报告+源代码+毕业论文+答辩PPT)    摘要:本系统为工资发放系统,是为了能够对工资发放进行有效的管理而做,采用的开发工具是 Microsoft Visual Basic 6.0。 使用的技术有:数据库的访问;菜单控制。本系统能够提供对工资发放各明细项目的数据编辑,自动计算出工资发放各项合计数据及代扣项目数据;可自主设定条件从而达到对工资数据的多角度查询功能;方便导入、导出数据及输出报表;并可转换成适合与银行UNIX平台接口的数据形式以便于委托银行办理代发工资业务。财务部门人员以管理员身份登录,对本系统的可登录人员进行管理;而单位其他相关部门人员作为一般用户登录本系统时,数据编辑程序、数据导入程序及增加用户、删除用户程序自动关闭,从而控制本系统的工资数据编辑、数据导入及用户增、删功能只能由财务部门人员操作。实现了财务部门对本单位工资发放系统的集中管理,保证了系统的安全性。是一个功能实用,用户(财务部、其他相关部门、银行)操作方便,简单明了的工资发放软件。   关键词:控件 对象 数据库 表 窗体     目 录   一.系统理论基础及运行环境&&&&&&&&&&&&&1  1.1 系统理论概述&&&&&&&&&&&&&&&&&1  1.1.1 管理信息系统的发展方向&&&&&&&&&&&1  1.1.2 管理系统的组成和特点&&&&&&&&&&&&2  1.1.3 Visual Basic特点&&&&&&&&&&&&&&2  1.2 管理信息系统的开发&&&&&&&&&&&&&&5  1.2.1管理信息系统的开发方式&&&&&&&&&&&5  1.2.2系统开发的一般方法&&&&&&&&&&&&&5  1.3 系统的运行环境&&&&&&&&&&&&&&&5  二. Visual Basic概述 &&&&&&&&&&&&&&6  2.1 Visual Basic技术的发展动态&&&&&&&&&6  2.1.1 概述&&&&&&&&&&&&&&&&&&&&6  2.1.2 Visual Basic技术的发展阶段&&&&&&&&7  2.1.3 Visual Basic技术的特点&&&&&&&&&&7  2.2 本课题的提出及研究意义&&&&&&&&&&&7  三.数据库&&&&&&&&&&&&&&&&&&&&8  3.1 数据库的基本概念&&&&&&&&&&&&&&8  3.2 数据库系统简述&&&&&&&&&&&&&&&9  3.2.1 数据库系统应用示例&&&&&&&&&&&&9  3.2.2 数据库系统的作用&&&&&&&&&&&&&9  3.3 管理系统..&&&&&&&&&&&&&&&&&9  3.3.1使用SQL操作数据库 &&&&&&&&&&&&10  3.3.2 使用ADO操作数据库&&&&&&&&&&&&11  3.4 ADODC控件的使用 &&&&&&&&&&&&&&11  四.系统规划 &&&&&&&&&&&&&&&&&11  4.1 系统功能分析&&&&&&&&&&&&&&&&11  4.2 设计思路&&&&&&&&&&&&&&&&&&12  4.3 工资管理系统的数据库设计&&&&&&&&&&12  4.4 业务流程图 &&&&&&&&&&&&&&&&14  4.5 模块功能图 &&&&&&&&&&&&&&&&15  五.系统实现 &&&&&&&&&&&&&&&&&&16  5.1欢迎界面 &&&&&&&&&&&&&&&&&&16  5.1.1具体设计步骤 &&&&&&&&&&&&&&&16  5.2刊物信息界面&&&&&&&&&&&&&&&&&18  5.3工资界面&&&&&&&&&&&&&&&&&&&21  5.4工资查询界面&&&&&&&&&&&&&&&&&28  设计总结 &&&&&&&&&&&&&&&&&&32  参考文献&&&&&&&&&&&&&&&&&&&&32  致谢辞&&&&&&&&&&&&&&&&&&&&&33  
请各位遵纪守法并注意语言文明基于java的企业员工信息管理系统的的设计
来源:&&&购买毕业设计请咨询QQ:
基于java的企业员工信息管理系统的的设计 结合企业员工管理工作的实际工作需要和员工信息管理工作的发展需求,运用数据库技术,设计出一套企业员工信息管理系统。期望能降低...
基于java的企业员工信息管理系统的的设计&&&&&&&&&&&&& &&结合企业员工管理工作的实际工作需要和员工信息管理工作的发展需求,运用数据库技术,设计出一套企业员工信息管理系统。期望能降低员工管理工作的成本,减轻企业管理人员的负担,方便员工信息的更新、维护和查询,增加数据的可靠性;从而开拓企业员工管理工作的新局面,提高管理水平。系统要求提供员工基本信息的维护功能,管理人员能够通过此项功能及时添加、修改和删除员工的基本信息;提供每位员工每月业绩的信息,使得管理人员能迅速地掌握每位员工业务方面的情况;为了维护数据的安全,系统对不同的用户应赋予不同的权限,并对所有的信息都应具有查询、统计和打印等基本操作功能。要求完成的主要任务及其时间安排:(1)&第4周-第5周,& 中外文文献的检索、阅读,并完成开题报告;(2)&第6周-第8周,& 熟悉数据库应用,根据企业员工信息管理任务要求,制定系统设计方案;(3)&第9周-第13周, 完成企业员工信息管理系统程序设计及调试工作;(4)&第14周-第15周,完成毕业设计论文的撰写和修订。&必读参考资料:[1]&Connolly,T.M.著,何玉洁 译. 数据库设计教程(第二版),2005[2]&萨维奇,施平安,李牧译. Java完美编程(第3版). 清华大学出版社,2008[3]&Solid Quality Learning. Microsoft SQL Server 2005:Database Essentials Step by Step. Microsoft Press, 2007&指导教师签名:&&&&&&&&&&&&&&&&&&&& 教研室主任签名:&&&&&&&&&&&& 毕业设计(论文)开题报告题目企业员工信息管理系统设计1.&目的及意义(含国内外的研究现状分析):随着我国国民经济建设的蓬勃发展和社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。员工信息管理作为企业内部的一种员工基本档案管理也是如此,由于企业的人数较多,每一位员工的具体实际情况也不尽相同,如果没有一个完整的员工信息管理系统去完成,将使工作变得复杂冗烦,并且对于工作的效率也将使一个致命的打击,使无论如何也无法适应现代社需要的。另外,目前部分企业使用的员工信息管理系统只有信息的录入,修改和删除的功能,而不具有信息查询的功能,这对于企业的信息管理工作来说是一个很遗憾的事情。因此,开发一套功能完整,设计合理,使用方便的企业员工信息管理系统成为很有必要的事情。企业员工信息管理系统的内容功能对于企业的决策者和管理者来说都至关重要,所以企业员工信息管理系统应该能够为管理者提供充足的信息和快捷的查询与管理手段。作为计算机应用的一部分,使用计算机对企业员工信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够降低员工管理工作的成本,减轻企业管理人员的负担,方便员工信息的更新、维护和查询,增加数据的可靠性;从而提高企业员工信息管理的效率,开拓企业员工管理工作的新局面,提高管理水平,是企业管理的科学化、正规化、信息化管理,与世界接轨的重要条件。2.&基本内容和技术方案:企业员工信息管理系统的开发主要包括后台数据库的建立(如:员工的基本信息)和维护(如员工信息的添加和删除以及登陆密码的修改)及前端应用的开发,对于前者要求建立起数据库一致性和完整性、数据安全性好的数据库,而对于后者则要求应用程序功能准确、完善,易使用等特点。该企业员工信息管理系统具备三方面的功能:一方面是员工用户,员工通过输入工号和密码进下该系统后,可以进行一些基础查询(员工信息查询、部门信息查询、)、业务信息管理(业务信息查询)重新登陆系统;一方面管理人员进入该系统则比普通员工多一些权限:信息输入与修改、信息查询。数据模型分析与设计数据库模型描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述(例如树、表等);模型的操纵部分规定了数据的添加、删除、显示、维护、打印、查找、选择、排序和更新等操作。数据库模型的分类:分层模型、关系模型、网络模型和对象模型。本课题选择的关系模型,关系模型是目前最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。关系数据模型具有下列优点:● 关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。● 关系模型的概念单一。无论实体还是实体之间的联系都用关系表示。对数据的检索结构也是关系(即表)。所以其数据结构简单、清晰,维护易懂易用。●关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。所以,关系数据模型诞生以后发展迅速,深受拥护的喜爱,这也是本课题选取关系数据模型的原因。当然,关系数据模型也有缺点,其中最主要的缺点是,由于存取路件对用户透明,查询效率往往不如非关系数据模型。因此为了提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。本课题的关系数据模型的数据结构可分为三个表来表示:员工信息表、部门信息表、业务信息表;员工信息表用于记录学生的基本信息;部门信息表用于记录部门的基本信息;业务信息表用于记录员工业务方面的基本信息。&员工信息E-R图&部门信息E-R图&业务信息E-R图根据对系统进行需求分析,本系统将分为4个模块:● 员工信息管理:管理员工基本信息,包括个人信息的添加、修改、删除。● 业务信息管理:管理员工业务的基本信息,包括业务项目信息的添加、修改和删除。● 部门信息管理:管理部门的基本信息,包括部门信息的添加、修改和删除。● 信息查询:查询已经登记的信息,包括员工的基本信息、业务的基本信息。功能结构图:企业员工信息管理系统功能结构如下图所示。&企业员工管理系统功能结构图3.&进度安排:(5)&第4周-第5周,& 中外文文献的检索、阅读,并完成开题报告;(6)&第6周-第8周,& 熟悉数据库应用,根据企业员工信息管理任务要求,制定系统设计方案;(7)&第9周-第13周,& 完成企业员工信息管理系统程序设计及调试工作;(8)&第14周-第15周,完成毕业设计论文的撰写和修订。4.&指导老师意见:&&&&&&&&&&指导教师签名:&&&&&&&&&&&&&&&&&&&& 年&&& 月&&& 日注:1. 开题报告应根据教师下发的毕业设计(论文)任务书,在教师的指导下由学生独立撰写,在毕业设计开始后三周内完成;2.设计的目的及意义至少800字,基本内容和技术方案至少400字;3.指导教师意见应从选题的理论或实际价值出发,阐述学生利用的知识、原理、建立的模型正确与否、学生的论证充分否、学生能否完成课题,达到预期的目标。& 郑 重 声 明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包括任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。&&&&&&&&&&本人签名:&&&&&&&&&&&&&&&&&&&&&&&&&& 日期:&&&&&&&&&&&&&& & 目& 录摘& 要&IABSTRACT&II1 绪论&11.1 研究背景&11.2 本课题研究现状&12 企业信息管理系统分析&32.1需求分析&32.2 技术可行性&42.3 环境可行性分析&52.4 系统结构可行性分析&63 企业信息管理系统设计&93.1 数据库设计&93.2 系统功能模块详细设计&134 系统实现&184.1 用户操作文件总体架构&184.2 技术难点&285 系统测试&295.1 界面测试&295.2 功能测试&295.3 需求测试&305.4 性能测试&305.5 企业员工信息管理系统的测试&30总结&31参考文献&32致谢&33&摘& 要在当今社会,互联网空前的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。考虑到当前大量企业的企业员工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。因此根据部分企业提供的需求,设计此企业企业员工管理系统,以帮助企业达到企业员工管理办公自动化、节约管理成本、提高企业工作效率的目的。根据实际需求,“企业员工信息管理系统”项目采用模块化的设计思想,在Windows XP操作系统环境下,搭建JSP运行环境JDK+TOMCAT,通过使用JAVA脚本语言完成动态的、交互的web服务器应用程序,实现员工个人信息查询、个人业绩查询及用户密码修改功能。本系统具有多方面特点:系统功能完备,用户使用方便简捷,人性化的用户界面,安全保密设置齐全,大大减少了操作人员和用户的工作负担,提高了企业员工信息管理的工作效率和企业的信息化的水平。&&&关键词:& java;jsp;信息管理&ABSTRACTNowadays, the Internet development is fast, bringing people's work and life tremendous convenience with efficiently.At present a great deal of business enterprise of the business enterprise employee the management is placed in the handicraft homework stage still, not only the efficiency is lowly, also usually because of management of immodesty but appear error.Need therefore provided according to parts of business enterprises, design this business enterprise business enterprise employee to manage system.The in aid of business enterprise attains a business enterprise employee a management to transact the automation,economy management cost,exaltation the business enterprise work efficiency of purpose."Business enterprise employee the information management system" item adoption mold piece design thought for turn, build the JSP movement environment JDK under the Windows XP operate system environment and TOMCAT Service.Pass the usage JAVA script language completion a dynamic state of,alternant web server application procedure.Carry out employee's personal information search,personal accomplishment search and the customer password modification function.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.&Key words: java ; jsp ;The information manage& 1 绪论随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识。作为计算机应用的一部分,使用计算机对企业员工信息进行管理,具有着手工管理所无法比拟的优点。这些优点能够极大地提高企业员工管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。根据以上情况,大量企业已经实施建立企业员工信息管理系统, 因为企业员工信息管理是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以企业员工信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。可以解决一直以来人们使用传统人工的方式管理文件档案存在着的许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算实现企业企业员工档案的管理势在必行。企业员工管理系统是现代企业管理工作不可缺少的一部分,是适应现代企业制度要求、推动企业劳动企业员工管理走向科学化、规范化的必要条件。企业员工信息管理系统是针对企业信息管理部门的大量业务处理工作用计算机进行全面现代化管理,该系统必须具备以下基本功能:(1)企业员工档案管理数据库及表的操作。实现对企业员工档案管理数据库及表的创建,表中数据的维护。(2)企业员工档案信息的管理。实现企业员工信息的添加、保存、修改和删除等。(3)企业员工档案信息的应用。实现企业员工信息的查询、统计和企业员工资源的利用等。1.1 研究背景现代信息技术的发展,在改变着我们的生活方式的同时,也改变着我们的工作方式,使传统意义上的企业员工管理的形式和内涵都在发生着根本性的变化。企业员工信息管理的内容也己经转变为对更为广泛的系统价值的追求。信息管理,如今已是一个热门话题,它已为许多企业所采用。在现代化的进程中,引入现代管理的思想,建立一套可面向企业单位的员工信息管理系统,也是十分必要的。本课题基于我国企业管理信息化建设现状,结合在实际工作中所遇到的问题和收获,对企业员工管理系统在设计开发等方面进行研究,重点研究系统开发中所采用的软硬件平台规范、数据库结构设计、开发工具的选择与使用,目的是从技术手段的角度阐述如何实现企业从传统经营管理模式向信息化管理模式转变的过程,以及企业员工管理系统在企业管理信息化中所起到的重要作用。1.2 本课题研究现状目前,在国内外各大企业单位中,企业员工信息管理系统的使用是非常广泛的。同时,有很多的软件开发商也开发了许多基于各种行业的企业员工管理学系统。而不同的企业具有不同的企业员工管理制度,这就决定了不同的企业需要不同的企业员工管理系统。而且,企业管理信息量大、操作繁琐、传统的方式不再适应新的工作需要,开发研制适合企业的企业员工管理系统,使其具有整体性强、流程简单、操作方便、功能丰富和通用性强等特点,是加快企业人才管理工作办公自动化、信息资源化和管理科学化建设进程必要途径。因此建立适合企业的管理信息系统,是促进企业信息高速公路的发展,为企业的发展提供条件的重要课题。1954年美国通用电气公司安装的第一台商业用数据处理计算机,开创了信息系统应用于中小企业管理的先河。二十世纪50年代中期到60年代中期,EDPS在中小企业中得到广泛应用,主要是用计算机部分地代替手工劳动,进行一些简单的单项数据处理工作,如计算工资、统计产量等。80年代在中小企业中开始使用一种典型的管理信息系统-MRPⅡ(制造资源计划)。MRPⅡ于1977年提出的,它以MRP为核心,将生产制造、财务会计、市场营销、工程管理、采购供应以及信息管理等各个部门纳入整体管理之中,构成了完整运作体系。90 年代以来 MRPⅡ也逐渐发展成为新一代的中小企业资源系统(ERP)。ERP在MRPⅡ基础上将供应商和中小企业内部的采购、生产、销售以及客户看作一个紧密联系的供应链,通过信息技术和管理理论对中小企业的物流、资金流和信息流进行全面的集成管理,以提高供应链的运行效率,追求中小企业资源的合理高效利用,提高中小企业在全球市场中的竞争能力。以 MRP Ⅱ /ERP 为代表的现代中小企业管理信息系统主要支持中小企业内部管理业务。随着网络的迅猛发展,出现了各种管理思想和模式的管理信息系统,如客户关系管理(CRM)、供应链管理(SCM)、商业智能(BI)、电子商务(EC)和计算机集成制造系统(CMIS)等。中小企业管理信息系统逐步会发展成为一种融合各种管理思想和信息技术的面向产品生命周期的集成系统,以实现资源共享、数据共享、适应网络经济的充分柔性的中小企业管理信息系统。企业级信息管理涉及到众多的项目、人员、数据和报告,如果没有一个有效的信息管理系统来支持和提高工作效率,企业信息管理将会难以实施。现在众多的软件公司都开发出了自己的企业信息管理信息系统,包括微软公司的MicrosoftProject2003;Primavera公司的Primavera Project Planner for Enterprise;Welcom公司的Open Plan等,这些都是比较优秀的企业项目信息管理软件,但软件只是一个辅助工具,如果没有首先建立一个科学的企业信息管理体系,则企业项目管理软件将难以发挥作用。 因此,研究如何建立一个精简、有效的企业信息管理体系,企业信息管理信息系统,如何有效支持企业项目管理体系,从而提高企业的项目管理能力,是具有非常重大的实际应用意义的。& 2 企业信息管理系统分析 2.1需求分析2.1.1 功能需求随着经济的迅速发展,企业的规模越来越大,企业的管理也越来越复杂,组织机构越来越庞大,组织的划分也越来越细,对企业各组织部门的管理以及各部门内部各职务的管理变的十分复杂,需要借助于计算机来进行管理。企业人员数量的增多,对员工的管理也是一项繁重的工作,不仅要对员工的基本信息进行管理,还要对员工的动态信息进行管理,例如调动信息,离职信息等,企业应对员工的这些动态信息及时的进行登记,只有合理的对员工进行管理,企业才能有条不紊的运行。进入企业的员工要与企业签订合同,合同管理关系到员工和企业双方的利益,因而需要进行认真的管理。为了企业扩展的需要,需要招聘新的人才,为企业注入新的血液,所以招聘信息以及应聘人员的信息的管理也相当重要。经济迅猛发展,竞争日趋激烈,企业为了能在竞争中立于不败之地,对员工的素质提出更高的要求,因而企业需要定期对员工进行培训,以便员工能更好的掌握新知识、新技术,提高工作效率,培训管理就是对企业开展的培训进行规划管理。此外,为了进一步调动员工的积极性,适当的发放福利也是必要的,所以对福利的管理也是必不可少的。考虑到对系统的安全控制,需要对登录该系统的管理员进行验证,因此涉及到对系统管理员的管理,综上分析,该系统应具备管理员登录管理功能,组织管理功能,人事管理功能,合同管理功能,招聘管理功能以及福利管理功能等。根据以上分析,可得系统的功能模块划分,系统功能模块图如图2-1所示。&图2.1 企业员工信息管理系统功能模块图系统功能模块图展示了该系统的模块划分,是系统总体功能的初步分析概括。管理员登录后,可以在主控界面查看统计分析信息,使用帮助信息,通过查看使用帮助信息可以了解系统操作的注意事项以及一些具体操作的使用说明,熟悉系统的操作规范后,管理员可以对人事管理,考勤管理,招聘管理,薪酬管理,培训发展管理,系统管理等模块进行相应的操作,从而实现对各个模块的管理。2.1.2 数据需求(1)数据录入和处理的准确性和实时性数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。(2)数据的安全性本系统为企业人事管理部门设计,因此只有特定的人事管理者才能对数据实现增,删,改,查等操作。未获授权人员不能进入系统。(3)数据的备份要定期对数据库中的数据进行全部或新增部分的备份工作,以保证在硬件出现故障或人为原因导致无法运行时是可以快速及时的还原到原来的正常状态。2.2 技术可行性2.2.1 程序语言的选择JSP(JavaServer Pages)是一种新动态网页技术标准,类似其他技术标准.在传统的网页HTML文件(*.htm,*.html)中加入Java程序片断(Scriptlet)和JSP标签,构成了JSP网页(*.jsp)Servlet/JSP Container收到客户端发出的请求时,首先执行其中的程序片断,软后将执行结果以HTML格式响应给客户端,其中程序片断可以是:操作数据库,重新定向网页以及发送E-Mail等等,这些都是建立动态网站所需要的功能.所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称为Server-side Language.所以被许多人认为是未来最有发展前途的动态网站技术之一。经过比较,PHP功能相对简单,不适合作大程序,而CGI效率相对较低,所以也不考虑,因为该系统并没有原有的基础平台需要扩展,也不需要与其他系统进行太多的交互,所以使用J2EE的模式并不能够体现出J2EE本身的优势,而JSP又是J2EE的核心技术之一,可以随时升级为J2EE程序,这里暂时不考虑采用J2EE,这样只需要在ASP和JSP中进行选择.在进行了诸多因素的比较之后,最终认为目前这个阶段比较合适的是JSP,而选择Struts架构作为开发的主体框架,选用Hibernate作为数据持续性处理层,则是考虑到了其高速的开发效率,及代码重用性高,易于维护等各种优势。其最终目的是希望提高系统底层业务逻辑的可重用性,增加系统的可扩展性,降低系统维护成本。2.2.2 JSP技术特点•将内容的生成和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面.使用JSP标识或者小脚本来生成页面上的动态内容.生成的内容的逻辑被封装在标识和JavaBeans组件中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面而不影响内容的生成。•一次编写,到处运行作为Java平台的一部分,JSP拥有Java编程语言”一次编写,到处运行”的特点,随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,但并不影响当前的应用。•JSP的平台适应性更广这是JSP比ASP的优越之处,几乎所有的平台都支持Java,它们可以在任何平台下通行无阻。虽然NT的OS占据了很大的市场的份额,但在服务器方面UNIX的优势仍然很大。从一个平台移植到另一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标注的字节码与平台无关。•数据库连接技术很多的OS中都带有JDBC驱动程序,Java就通过JDBC与数据库连接,执行查询,提取数据等操作。Sun公司还提供了JDBC-ODBC的桥连方式,因此Java也可以访问带有ODBC驱动的数据库,目前大多数数据库系统都带有ODBC驱动,所以Java能访问诸如Oracle、Sybase、MS SQL Server 和Access等类型的数据库。2.2.3 操作可行性对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求,同时也方便了公司的内部管理。管理人员及用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。2.2.4 经济可行性系统的经济可行性指的是对组织的经济状况和投资能力进行分析,对系统建设、运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。本模块简单易开发,且开发需要资金少,系统开发运行后,可以实现企业员工信息管理的计算机化,节省了人力、物力,将人从繁重的工作业务中解脱出来,减少了信息管理中无意的错误,节省了大量的时间,管理效率也大幅度提高,因此,在经济上是可行的。所带来的效益远远大于系统软件的开发成本。在经济上完全可行。2.2.5 综合综上所述,本系统使用JSP开发技术,工作平台为应用界面友好且功能强大的由MX MyECplise软件,服务器端脚本用JAVA脚本来编写,客户端脚本也用JAVA来编写,数据库使用Microsoft SQL Server 2000数据库,服务器是TOMCAT。在大学的学习中,已经自学过JAVA这种语言,并且曾经参加实训开发项目,有一定的实地开发经验。且热爱计算机科学,又刻苦钻研的精神,经过大学四年的学习,相关课程已基本熟练掌握,本系统是在学校开发,遇到问题可以与同学一起研究,再加上指导老师的指导。因此在技术上能够适应本系统的开发。2.3 环境可行性分析2.3.1 软件环境•操作系统:Win2k Server sp4•数据库: Microsoft SQL Server 2000 Enterprise Edition& sp4•Web服务器:TOMCAT•IDE;Eclipse3.1.1+Myeclipse4.1.1GA+Lomboz+emf,Dreamweaver8•外部包:Struts.jar Hibernate.jar 2.3.2 硬件环境AMD Athlon 64 3000+,KingMax PCMB × 2,Gainward NV35XTSeagate SATA 8M 120GB × 22.4 系统结构可行性分析2.4.1 模式采用本系统采用B/S模式。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用那种操作系统都可以让大部分人使用windows作为桌面操作系统电脑不受影响,这就使的最流行免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的。2.4.2 Struts架构随着Web开发技术的日益成熟,在Web开发开发领域中出现了许多设计好的软件开发框架,Struts就是一种基于MVC经典设计模式的框架,也是当前Web开发中比较成熟的一种框架。2.4.3 经典MVC模式MVC(Model-View-Controller)模式,即模型-视图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分。•模型(Model):业务逻辑层。实现具体的业务逻辑,状态管理的功能。•视图(View):表示层。即与用户实现交互的界面,通常实现数据输入和输出功能。•控制器(Controller):控制层。起到控制整个业务流程(Flow Control)的作用,实现View和Model部分的协同工作。MVC设计模式可以针对需要为同样的数据提供多个不同视图的应用程序,例如:公司产品数据库中同样的产品信息数据,但需要根据用户的不同需求在页面中显示其所需的不同产品信息。MVC设计模式中,事件一般是指客户端Web浏览器提交的各种不同请求,这些请求由控制器进行处理,控制器根据事件的类型来改变模型或各个视图,视图也可以接受模型发出的数据更新的通知,依据数据更新的结果调整视图效果,呈现在用户面前。而模型也可以通过视图所获得的用户提交的数据进行具体业务逻辑的处理。原理如图2.2所示。&图 2.2& MVC设计模式的结构2.4.2.1 Struts 1.2 开发框架作为基于MVC设计模式的Web应用的一种典型体现,Struts架构实际上是建立在Model2基础上的,对Model,View和Controller都提供了现成的实现组建。2.4.2.2 Controller控制器部分Struts中的Controller控制器部分是通过专门的Servlet来实现的,该Servlet是一个Struts API中提供的ActionServlet类型的实例,ActionServlet类继承了javax.servlet.http.HttpServlet类,因此该类的实例可以和普通的Servlet一样工作,其作用是接收客户端浏览器的请求,然后选择执行相应的业务逻辑,再把响应结果送回到客户端。Action对象是开发者定义的类(该类必须是Struts API中提供的Action类的子类)的实例。在继承该类的过程中开发者可以加入具体业务逻辑或调用业务逻辑模块。Action对象在进行了业务逻辑或调用业务逻辑模块。Action对象在进行了业务逻辑的处理以后会将应用程序流程转到合适的View组件,最终将响应送回浏览器客户端。Struts中提倡Action对象只用来决定”做什么”,相当于一个低层面的控制器,因此也可以将Action归纳为Controller的组成部分。2.4.2.3 Model 模型部分MVC系统中的Model模型部分从概念上可以分为两类:系统的内部状态和改变系统状态的动作.Struts中的Model部分一般由JavaBean以及EJB组成。在Struts架构中使用JavaBean来提供具体的业务逻辑,即”怎么做”,对于复杂的系统也可以使用EJB等组件来实现系统状态维护。这种业务逻辑的细分可以增强可以代码的可重用性。2.4.2.4 View视图部分Struts中的View视图部分依然可以采用JSP来实现。此外,Struts还提供了丰富的自定义标记库,View部分使用这些自定义标签同样可以实现与Model部分的有效交互并能够增强显示功能。& 3 企业信息管理系统设计系统设计是在系统分析的基础上由抽象到具体的过程,主要目标是将系统分析阶段所提出的反映到信息需求的系统逻辑方案并转换成可以实施的基于计算机与通信系统的物理(技术)方案,为下一阶段系统实施提供必要的技术资料,应符合系统性、灵活性、可靠性,经济性的要求。3.1 数据库设计3.1.1 数据库的需求分析依据项目的处理需求,对应数据表的设计及功能如下:• 培训信息表: 主要用于保存培训信息• 奖惩表: 主要用于保存奖惩信息• 应聘信息表: 主要用于保存应聘信息• 薪金表: 主要用于保存薪金信息• 用户表: 主要用于保存用户信息&图3.1 数据库需求分析流程图&图3.2 数据库访问数据流图&&&&&图3.3 系统模块数据字典3.1.2 数据库表的具体设计表3.2.2 培训信息表字段名数据类型长度是否主键描述idint4是数据库流水号namevarchar100培训名称purposevarchar500培训目的begintimedatetime8开始培训时间endtimedatetime8结束培训时间datumvarchar2000培训人员teachervarchar50培训讲师studentvarchar50学生createtimedatetime8创建时间educatebit1培训级别effectvarchar500培训影响度summarizevarchar2000培训材料表3.2.3奖惩表字段名数据类型长度是否主键描述Idint4是数据库流水号Namevarchar2000奖惩名称Reasonvarchar50奖惩原因explainvarchar50描述createtimedatetime8创建时间表3.2.4应聘信息表字段名数据类型长度是否主键描述idint4是数据库流水号namevarchar50姓名sexbit1性别ageint4年龄jobvarchar50应聘职位specialtyvarchar50所学专业experiencevarchar50工作经验studyeffortvarchar50在校所学专业schoolvarchar50毕业学校telvarchar50电话emailvarchar50电子邮件createtimedatetime8创建时间contentntext16详细经历isstockbit1标识表 3.2.5薪金表字段名数据类型长度是否主键描述idint4是数据库流水号namevarchar50员工姓名basicfloat8基本薪资eatfloat8饭补housefloat8房补dutyfloat8全勤奖scotfloat8赋税punishmentfloat8额外补助otherfloat8罚款granttimedatetime8发放时间totalizefloat8总计表 3.2.6用户表字段名数据类型长度是否主键描述idint4是数据库流水号usernamevarchar50用户名称passwordvarchar50用户密码sexbit1用户性别birthdaydatetime8用户出生年月日createtimedatetime8用户创建的时间isadminbit1是否超级管理员contentvarchar2000管理员级别3.2 系统功能模块详细设计3.2.1 功能设计本系统主要用于对企业中的“人”进行管理。具体地讲,企业员工信息管理系统就是通过企业员工信息规划、员工考核、薪酬管理、员工激励、人才培训和开发等一系列手段来提高劳动生产率,最终达到发展目标的一种管理行为。具体实现目标如下。&实现对员工信息进行全面管理的功能。&设置企业员工基础信息管理功能。&设置员工考勤管理功能模块。&员工薪酬信息管理。&实现企业员工培训信息全程跟踪的功能。&实现企业的招聘信息、应聘信息的管理功能。&企业人才库管理功能。&系统用户信息的管理。&系统最大限度地实现了易安装性、易维护性和易操作性。&系统运行稳定、安全可靠。3.2.2 模块设计企业员工信息管理系统是针对中小企业对现有员工和新聘员工的一个WEB管理平台。主页功能模块主要包括以下功能模块:人员管理:主要包括浏览人员信息、添加人员信息、人员信息的添加、人员信息的修改。招聘管理:主要包括应聘人员信息的详细查看、删除、添加以及信息入库。培训管理:主要包括培训计划的详细信息、信息删除、添加培训计划和填写培训总结。奖惩管理:主要包括奖惩详细信息、删除详细信息、添加详细信息、修改详细信息。薪金管理:主要包括薪金的修改、添加、删除。 3.3.2.1 企业员工信息管理系统功能模块之间的关系i.&基本信息管理功能集合包括部门信息管理和员工信息管理等功能模块。此集合中功能模块的关系如图3.4所示。&图3.4员工基本信息管理模块关系图员工基本信息管理模块是整个系统的核心。除了部门管理模块外,其他各个模块都针对每一个员工的一个方面进行管理,都需要提供员工编号等基本信息作为索引。ii.&考核与待遇管理功能集合包括考勤管理,工作考评管理和工资管理模块。此集合中功能模块的关系如图3.5所示。&图3.5 考核与待遇管理功能集合模块关系图iii.&用户管理及权限控制功能集合包括用户信息管理、权限控制等模块。权限控制对于企业员工信息系统来说是非常必要的。部门与员工基本信息数据,包括考勤,考核工作和工资等信息都不是一般的员工可以随意添加和改动的。这些操作只有人力资源主管才有此权限。在本系统中,我们将系统用户划分了3大类:人力资源主管:此类型用户是本系统中权限最高的用户。在本系统中的任何模块中,都可以进行添加,删除,修改等记录,并对所有数据进行查询显示的权限。系统管理员:是为了维护本系统而创建的用户,可以对除“人力资源主管”用户以外的其他类型用户进行管理。普通用户:权限最低的一类用户,除了可以修改自身的用户名和密码外,几乎没有其他数据库操作权限。在其他的模块中,此类用户只能浏览到与自己或自己的下属相关的数据,但是不能对数据进行修改或删除操作。在员工工作考评模块中,普通用户可以输入对自己下属员工的工作评价和资金系数等数据。此集合中功能模块的关系如图3.6所示&图3.6 用户管理功能集合模块关系图用户登录模块开始,对系统的身份进行认证。身份认证可以分为以下两个过程:&确认用户是否为有效的系统用户;&确定用户的类型;第一个过程决定用户能否进入系统。第二个过程根据用户的类型决定用户的操作权限,从而决定用户的工作界面。&图3.7 系统登录验证流程图在图3.7中可以看到,每个用户有3次机会进行身份认证。如果3次输入的用户名和密码都无法与数据库中的数据匹配,则强制退出系统。3.2.2.3 考评模块查询流程图进入系统后,不同类型的用户所能进行的操作也不一样。这些操作笼统可以分为用户管理模块和人事管理模块。由于篇幅所限,五法完整地描述人事管理模块的系统流程,只是把它分为两个部分:考评信息的高级管理和查询;普通用户考评信息管理查询。普通用户对考评管理和查询。普通用户人事考评信息管理和查询部分非常简单,,因此在很读模块中,普通用户只有查询功能。系统流程见图3.8所示:&图3.8 考评管理和查询流程图“人事主管”用户对考评信息的高级管理和查询。系统流程如图3.9所示:&图3.9 考评模块查询流程图& 4 系统实现4.1 用户操作文件总体架构用户操作模块主要包括用户登录和人员管理模块,具体功能如下:用户登录模块:用于登录系统。人员管理模块:用于浏览、添加和修改人员信息。4.1.1 用户登录模块设计用户登录模块是用户进入主页面的入口,其运行结果如图4.1所示。&&&&图4.1 用户登录模块运行结果系统登陆是企业员工信息管理中最先使用的功能,因为用户登陆在数据库中使用的是人员表,人员表中有一个isadmin字段,是来标识是否是管理员的。在登陆时要根据数据库的这个字段来判断此用户是否具有管理员的权限。在网页里添写用户名和密码后点击【登陆】按钮,网页会访问一个URL,这个URL是“logon.do?action=logon”,代码如下:&& &form name="usersForm" method="post" action="logon.do?action=logon"&&&&&& &tr&&&&&&&& &td width="170" height="40" align="center" &用户名:&/td&&&&&&&& &td width="230" height="40" &&&&&&&&&& &input name="username" type="text" class="input"&&&&&&&& &/td&&&&&& &/tr&&&&&& &tr&&&&&&&& &td height="40" align="center"&密&&码:&/td&&&&&&&& &td height="40" &&input name="password" type="password" class="input" &&/td&&&&&& &/tr&&&&&& &tr&&&&&&&& &td height="40" colspan="2" align="center" &&input type="submit" name="Submit" value="登陆" class="button"&&&&&&&&&& &&&&&&&&&& &input type="reset" name="Submit2" value="重置"class="button"&&/td&&&&&&&& &/tr&&& &/form&在这个表单的name的值是usersForm,它是Struts的ActoinForm的实现类在配置文件中的名字,如下所示:&form-bean name="userForm" type="com.bOS.bPRO_PersonManage.actionform.UsersForm" /&action是Struts的Action的URL,他们在Struts的配置文件中都是已经配好的,如下所示:&&& &action path="/logon" type="com.bOS.bPRO_PersonManage.action.UsersAction" name="userForm" scope="request"&&&&&& &forward name="success" path="/manage.jsp" /&&&&&& &forward name="failed" path="/failed.jsp" /&&&& &/action&在这个配置文件中,可以了解到如下信息:&根据name="userForm"可以找到与之相对应的ActionForm的实现类“com.bOS.bPRO_PersonManage.actionform.UsersForm”。&根据type="com.bOS.bPRO_PersonManage.action.UsersAction"可以找到处理用户数据的Action类。&根据&forward name="success" path="/manage.jsp" /&和&forward name="failed" path="/failed.jsp" /&可以了解,这个Action返回success时,页面会被转到manage.jsp文件,这就是登陆成功的页面。如果当Action返回failed时,页面会被转到failed.jsp文件,这个文件是当用户登陆失败将要转到的页面。Struts的Action实现类的execute()方法是最先被执行的,这个方法本身也没有具体的事务,而是根据action的参数不同执行相应的方法。在登陆页里面可以找到有一个“action=logon”的字样,它的目的就是在这里做逻辑判断。当action=logon时调用logon()方法。logon()方法从UsersForm中得到用户提交的数据,然后在调用UsersDao()的logonUsers()方法。并且把UsersForm转成Users类做为logonUsers()方法的参数。调用后会返回一个boolean型的值。如果为真,则返回“mapping.findForward("success");”否则返回“mapping.findForward("failed");”也就是当用户登陆成功后,返回给用户登陆成功的页面,登陆失败后返回用户一个登陆失败的页面。那么UsersDao的logonUsers()方法是根据什么得到的返回值呢,现在就让我们看看这个方法。这个方法先通过HibSessionFactory得到一个Hibernate的Session并且开始一个事务,Session再像使用一个欲编译似的命令似的东西,设定参数、提交事务和最后在关闭Session.。得到一个List里面就存储着所有查询出的结果。根据这个结果就可以判断出该用户是否有登陆的权根了,在返回true 或者false。就这样合法的用户就可以顺利的登陆了。那刚才那些有些类似于欲编译的东西是什么呢,这些就是Hibernate特有的查询语言,被称为Hibernate 查询语言(HQL),而它本身也就是使用的JDBC的欲编译技术。4.1.2 人员管理模块设计人员管理模块主要包括浏览人员信息、添加人员信息、人员信息的添加、人员信息的修改。此模块文件架构如图4所示。各项管理工作都是在用户成功登陆后的管理页面进行的,在管理控制页面的左侧是各项的相关链接,右侧是操作平台。管理控制页面右侧实际上是一个iframe,如下所示:&&& &td height="550" valign="top"&&iframe name="frame" src="main.do" width="100%" height="100%" frameborder="0" hspace="0"&&/iframe&&/td&在左侧的链接中使用target="frame"就可以在这个iframe中打开新的链接了。单击“添加人员信息”,即打开添加人员信息的页面如图4.2所示。&图4.2& 添加人员信息页面添加人员信息的链接是这样的,如下所示:&td height="22" align="center"&&a href="adduser.do" target="frame"&添加人员信息&/a&&/td&在Struts配置文件中,添加人员信息的链接没有使用ActionForm类,也没有使用Action的实现类,如下所示:&&action path="/adduser" forward="/adduser.jsp" /&adduser.jsp文件,只是一个普通的JSP文件,但是它的表单元素都是与UsersForm相对应的,UsersForm如下所示:package com.bOS.bPRO_PersonManage.import com.bOS.bUtil.DateUimport javax.servlet.http.HttpServletRimport org.apache.struts.action.ActionEimport org.apache.struts.action.ActionFimport org.apache.struts.action.ActionMimport com.bOS.bPRO_PersonManage.en.Upublic class UsersForm extends ActionForm {&&& public String getContent() {&&&&&&&&&& }&&& public void setContent(String content) {&&&&&&& this.content =&&& }&&& private L&&& private S&&& private S&&& private B&&& private S&&& private S&&& private B&&& private S&&& public String getCreatetime() {&&&&&&&&&& }&&& public void setCreatetime(String createtime) {&&&&&&& this.createtime =&&& }&&& public Long getId() {&&&&&&&&&& }&&& public void setId(Long id) {&&&&&&& this.id =&&& }&&& public Byte getIsadmin() {&&&&&&&&&& }&&& public void setIsadmin(Byte isadmin) {&&&&&&& this.isadmin =&&& }&&& public String getPassword() {&&&&&&&&&& }&&& public void setPassword(String password) {&&&&&&& this.password =&&& }&&& public String getUsername() {&&&&&&&&&& }&&& public void setUsername(String username) {&&&&&&& this.username =&&& }&&& public void reset(ActionMapping arg0, HttpServletRequest arg1) {&&&&&&& this.id=&&&&&&& this.username=&&&&&&& this.password=&&&&&&& this.isadmin=&&&&&&& this.createtime=&&&&&&& this.content=&&&&&&& this.sex=&&&&&&& this.birthday=&&&&&&& &&& }&&& public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {&&&&&&&&&& }&&& public String toString() {&&&&&&& StringBuffer toStr = new StringBuffer();&&&&&&& toStr.append("[UsersForm] = [n");&&&&&&& toStr.append("&&& id = " + this.id + ";n");&&&&&&& toStr.append("&&& username = " + this.username + ";n");&&&&&&& toStr.append("&&& password = " + this.password + ";n");&&&&&&& toStr.append("&&& sex = " + this.sex + ";n");&&&&&&& toStr.append("&&& birthday = " + this.birthday+ ";n");&&&&&&& toStr.append("&&& createtime = " + this.createtime+ ";n");&&&&&&& toStr.append("&&& isadmin = " + this.isadmin + ";n");&&&&&&& toStr.append("&&& content = " + this.content + ";n");&&&&&&& toStr.append("&&& ];n");&&&&&&& return toStr.toString();&&& }&&& public String getBirthday() {&&&&&&&&&& }&&& public void setBirthday(String birthday) {&&&&&&& this.birthday =&&& }&&& public Byte getSex() {&&&&&&&&&& }&&& public void setSex(Byte sex) {&&&&&&& this.sex =&&& }&&& public Users populate(){&&&&&&& Users u=new Users();&&&&&&& u.setId(getId());&&&&&&& u.setIsadmin(getIsadmin());&&&&&&& u.setContent(getContent());&&&&&&& u.setUsername(getUsername());&&&&&&& u.setPassword(getPassword());&&&&&&& u.setSex(getSex());&&&&&&& u.setBirthday(DateUtil.parseToDate(getBirthday(),DateUtil.yyyyMMdd));&&&&&&& u.setCreatetime(DateUtil.parseToDate(getCreatetime(),DateUtil.yyyyMMddHHmmss));&&&&&&&&&& }}UsersForm类中的reset()方法作用是当用户点击“重置”按钮时,清空input输入框的内容,toString()方法覆盖了Object和toString()方法,populate()方法很有,它把UsersForm转化成Users实体类,大大方便了程序在对数据库操作时使用的方便。而且这个方法中还把用户的生日等表单元素的值由字符型转成日期类型。在adduser.jsp页面中的action上可以看到它要提交的URL,如下所示:&form name="userForm" method="post" action="modifyuser.do?action=adduser" onSubmit="return userValidate();"&配置文件中modifyuser的Action实现类是“com.bOS.bPRO_PersonManage.action.UsersAction”,如下所示:&action path="/modifyuser" type="com.bOS.bPRO_PersonManage.action.UsersAction" name="userForm" scope="session"&&&forward name="success" path="/user.do?action=listuser" /&&/action&在UsersAction找到参数action等于adduser时所调用的方法addUsers(),它只是把从UserForm表单转化成的User类做为参数传给了UsersDao的addUsers()方法。在由这个方法向数据库添加人员信息,如下所示:&&& public void addUsers(Users users) throws HibernateException {&&&&&&& users.setCreatetime(new java.util.Date());&&&&&&& Session session = HibSessionFactory.currentSession();&&&&&&& Transaction tx = session.beginTransaction();&&&&&&& session.save(users);&&&&&&& tx.commit();&&&&&&& HibSessionFactory.closeSession();&&& }如果添加成功页面会被发转到user.do?action=listuser的URL。user.do的配置文件如下所示:&&& &action path="/user" type="com.bOS.bPRO_PersonManage.action.UsersAction" name="userForm" scope="request"&&&&&& &forward name="success" path="/listuser.jsp" /&&&& &/action&这样就在页面做一次提交时它访问了二次UsersAction,第一次的作用是向数据库中添加信息,随后又把所有人员信息取出来显示给用户,同样UsersAction还只是调用UsersDao,取数据库的具体操作在UsersDao文件中,他这次调用的是listUser()方法,如下所示:&&& public List listUser() throws HibernateException {&&&&&&& Session session = HibSessionFactory.currentSession();&&&&&&& Transaction tx = session.beginTransaction();&&&&&&& Query query = session&&&&&&&&&&&&&&& .createQuery("select u from Users as u order by createtime");&&&&&&& List list = query.list();&&&&&&& tx.commit();&&&&&&& HibSessionFactory.closeSession();&&&&&&&&&& }UsersAction取出从UsersDao中数据,在把它存到request里,然后返回return mapping.findForward("success");在Strutsr的配置文件里返回页是listuser.jsp。所有用户的信息都在这个页中显示出来。如下所示:& &tr&&&& &td height="22" colspan="7" align="left" &&strong class="text13"&浏览人员信息&/strong&&/td&& &/tr&& &tr class="tdhui"&&&& &td height="22" align="center" &人员姓名&/td&&&& &td align="center" &登陆密码&/td&&&& &td height="22" align="center" &性别&/td&&&& &td height="22" align="center" &出生日期&/td&&&& &td height="22" align="center" &是否管理员&/td&&&& &td height="22" align="center" &简介&/td&&&& &td align="center" &执行操作&/td&& &/tr&& &% List list=(List)request.getAttribute("list");& & if(list!=null&&list.size()&0){&&&& Iterator it = list.iterator();&&&&&&&&&& while (it.hasNext()) {&&&&&&&&&&&&&&&&&&& Users u = (Users) it.next();& %&& &tr&&&& &td height="22" align="center" &&%=StringUtil.notNull(u.getUsername())%&&&/td&&&& &td height="22" align="center" &&%=StringUtil.notNull(u.getPassword())%&&&/td&&&& &td height="22" align="center" &&%=new Byte("1").equals(u.getSex())?"男":"女"%&&/td&&&& &td height="22" align="center" &&%=StringUtil.notNull(DateUtil.parseToString(u.getBirthday(),DateUtil.yyyyMMdd))%&&&/td&&&& &td height="22" align="center" &&%=new Byte("1").equals(u.getIsadmin())?"是":"否"%&&/td&&&& &td height="22" align="center" &&%=StringUtil.notNull(u.getContent())%&&&/td&&&& &td height="22" align="center" &&a href="selectuser.do?action=selectuser&id=&%=u.getId()%&"&修改&/a&&&&a href="modifyuser.do?action=deleteuser&id=&%=u.getId()%&"&删除&/a&&/td&& &/tr&& &%&&}&& }else{%&& &tr&&&& &td height="22" colspan="7" align="center" &对不起,没有添加人员信息!!!&/td&& &/tr&& &%}%&在显示页中,从request里面的取出数据,如果有则显示在页面上,使用“list!=null&&list.size()&0”判断如果在没有数据的情况下,将对用户提示说“对不起,没有添加人员信息!!!”。这是添加人员信息的整个过程,在这个过程中,有一部分是用于显示人员信息的,就是“user.do?action=listuser”,它是显示人员信息的地址。如果在网页中直接点击这个链接地址,同样也会调用出所有用户的信息。这就是“浏览人员信息”的链接。页面执行后如图4.4所示。&图4.4 浏览人员信息页面人员信息的列表的最后一列可以对该条记录做删除和修改。删除的链接地址是“modifyuser.do?action=deleteuser&id=&%=u.getId()%&”它向Action的实现类提交了两个参数,一个是action=deleteuser是固定不变的,另一个是该用户的id这是根据不同记录取出来的。在UsersAction类中根据action的值可以找到与其相对的方法,如下所示:&&& private ActionForward deleteUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {&&&&&&& Long id=new Long(request.getParameter("id"));&&&&&&& Users users=new Users();&&&&&&& users.setId(id);&&&&&&& dao.deleteUsers(users);&&&&&&& return mapping.findForward("success");&&& }在这个方法里得到页面提交过来的用户ID,把这个id存在Users表中的实例中,传给dao的deleteUsers()方法,我们可以看到关于数据库方面的操作都被封装在Dao中。具体的删除操作的代码如下所示:&&& public void deleteUsers(Users users) throws HibernateException {&&&&&&& Session session = HibSessionFactory.currentSession();&&&&&&& Transaction tx = session.beginTransaction();&&&&&&& session.delete(users);&&&&&&& tx.commit();&&&&&&& HibSessionFactory.closeSession();&&& }删除用户时和添加用户一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了,操作完成后千万记得要提交事务,即调用commit()方法,和关闭Session。修改人员的信息时必须先把要修改的人员信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户ID,用来查询出用户信息,如下所示:&a href="selectuser.do?action=selectuser&id=&%=u.getId()%&"&修改&/a&根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示:&&& &action path="/selectuser" type="com.bOS.bPRO_PersonManage.action.UsersAction" scope="request"&&&&&& &forward name="success" path="/updateuser.jsp" /&&&& &/action&它调用了UsersAction类,返回到updateuser.jsp文件,在UsserAction中同前面一样也是根据action的参数来识别出调用selectUser()方法的,方法实现如下所示:&&& private ActionForward selectUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {&&&&&&& Long id=new Long(request.getParameter("id"));&&&&&&& Users u=dao.loadUsers(id.longValue());&&&&&&& request.setAttribute("user",u);&&&&&&& return mapping.findForward("success");&&& }这个方法使在调用Dao的loadUsres()的方法后,得到一个Users的返回值,里面存着与此id相对应的人员信息,然后在把它存在request里。loadUsres()方法实现如下所示:&&&&& public Users loadUsers(long id) throws HibernateException {&&&&&&& Session session = HibSessionFactory.currentSession();&&&&&&& Transaction tx = session.beginTransaction();&&&&&&& Users u = (Users) session.load(Users.class, new Long(id));&&&&&&& tx.commit();&&&&&&& HibSessionFactory.closeSession();&&&& }Hibernate在使用这个load()方法时比较特别,需要传入实体类的class,和要查询的用户ID。得到的返回值需要做一下强制类型转换。显示用户信息的页面在updateuser.jsp中,如图4.5所示。&图4.5 修改用户信息页面首先要从request中取出人员信息,在转化成Users类型,然后显示在页面中。在显示是否是管理员的项时比较人特别。如下所示:&&& &td width="33%" height="22" align="center" &是否管理员:&/td&&&& &td width="67%" height="22" align="left" &&input name="isadminhelp" type="checkbox" &%=new Byte("1").equals(u.getIsadmin())?"checked":""%& onClick="javascript:adminChecked();" value="&%=u.getIsadmin()%&"&&/td&&&input type="hidden"& name="isadmin" value="&%=u.getIsadmin()%&"&&实际想要提交的表单的名字是isadmin,而在显示checkbox时用的name是isadminhelp。Isadmin确使用hidden类型做为表单提交名字,这和checkbox的特性有关。在使用javascrip对checkbox的value控制时。当value的值如果像这样“value="&%=u.getIsadmin()%&"”被写死时,使用javascrip是对value的值改变后,在提交表单时是无效的。于是我们就用hidden做为表单提交项,而&input name="isadminhelp" type="checkbox" &%=new Byte("1").equals(u.getIsadmin())?"checked":""%& onClick="javascript:adminChecked();" value="&%=u.getIsadmin()%&"&只是在显示给用户的看的。在表单不接收isadminhelp的value,只接收isadmin的value。4.2 技术难点4.3.1 参数传递中的中文乱码问题由于浏览器中的参数传递是按字节传送,因此英文和数字不会有任何的问题,而中文汉字则由两个字节组成。为了解决这个问题,使用了下面的两种方法:①&%request.setCharacterEncoding(“gb2312”);%&②request.getParameter("Password").getBytes("ISO-8849-1"),"GB2312");4.3.2 图片处理在SQL Server2000的数据库中可以存放任何格式的图片,但是要将其转换为二进制的数据存入数据库,在调用时再将二进制数据转换为图片,这样虽然便于管理,但是在当前国内的网速来看,这样的方法是在是不可取。因此本系统的图片均是存放的相对路径,将图片放在系统根目录下的image文件夹中,按类分好,然后将其相对路径存入数据库的对应列中,这样可以大大提高网页浏览的速度。4.3.3 HQL语言本系统中,所有对数据库的操作都由Hibernate来完成,因此用到了大量的HQL语言。HQL是Hibernate设计的一套完整而实用高效的查询语言,它通过面向对象的语句结构实现了和SQL语言类似的功能。如果向表里插入一条数据的话,直接调用save()方法即可,但如果要使用查询功能的话,我按照一般的SQL语句的方法:from 表名 where 条件,却总是找不到预期的数据,后来看书中发现,from后跟的是表对应映射的类文件名,而非表名,比如招聘表为invite,它对应的类为Invite.java,所以在from后要根Invite而不是invite。4.3.4 安全性将项目发布到互联网上后,有些用户不是点击超链接打开网站的某个页面,而是在地址栏中直接写,而后进入,试图避开身份验证,处于对安全性的考虑,本项目在用户登陆后才能进入的页面中,加入了一行判断,如果用户非法进入,则看到的将是一片空白页。& 5 系统测试在完成了程序的编写工作后,接下来将进行软件的测试,这里说的软件,并不单单是指程序本身,还包括其他方面。测试和开发一样,也是一项技术性很强的工作,有着很多的技巧。软件测试是软件质量保证的主要活动之一,因此,测试的质量直接影响软件的质量。依据前面所说的测试对象,我们把测试划分为几个方面来进行测试。5.1 界面测试界面测试是测试过程中比较简单直观的一种测试方法,只要细心地按界面要求核对就行了。可这快往往是程序开发人员容易忽视和遗漏的地方。也是常常出Bug的地方。下面是界面测试中经常出现的几种Bug:1)&错别字,即界面中的标题或者文本内容中出现了错别字。这种Bug如果测试人员不细心,和难找出来,可能会出现在提示信息或界面中。2)&出现了一些根本读不懂的内容,一般多出现在程序的提示信息和一些较长的文本中。这种情况基本上出现在拼起来显示的提示中,页面的简单陈述是通过变量拼组起来的,通过程序将字一个一个地输出出来。通常是因为程序中的控制错误或是程序开发人员对程序没有进行认真的自测,导致出现这种Bug。3)&程序员自创的词语,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人员使用一些专业术语,并且混杂着自己的理解出现Bug,主要是由于开发过程中团队合作没又明确的分工,没有统一的规范用语。4)&页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况只出现在没有CSS定义的情况下,或是已经定义的CSS,开发人员在开发过程中没有调用。5)&标题相近的程序及模块,把标题弄混。这种情况多是因为业务方面的定义名称很相似或很类似,并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。5.2 功能测试顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测试中需要注意的有:1)&查询功能中,有按单一查询条件进行查询的,也有按多个查询条件组合查询的,这里要注意多个查询条件之间的关系,还有一些常识性的问题,比如按月查询,闰年中二月的天数。2)&录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。3)&测试删除功能中需要注意的是单击”删除”按钮后,一般会出现提示信息,询问是否确定删除。通常情况下,我们单击”确认”按钮查看信息是否被删除掉了,而忽略了单击“取消”按钮后程序的反应,这时有可能的是没有删除,还有一种可能是即便单击了“取消”按钮,也一样删除了数据。另外,在删除多条记录的时候,要注意连续选中的几条记录是否真正都被删除了,即如果再按照这种查询方式查询,是否还能查询出来。有的时候需要在数据库中设一个标志位,而不是真正的物理删除。所以在下一次查询中,可能还会被查询出来,这主要是因为在查询条件中没有将标志位考虑在内。4)&关于修改功能的测试,主要是看修改确认后是否数据真正已被修改了。这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。5.3 需求测试针对需求测试,是测试中很重要的一个环节。因为需求是在软件设计,开发乃至软件测试中重要的依据。要针对需求测试,首先就要对项目的需求和业务有一定的了解。这些需求很多时候是在实现增、删、查、改这些基本功能之上,针对项目和相关业务所作的一些逻辑上的控制。这就要求程序员在设计和编码的时候要去充分理解考虑需求。5.4 性能测试性能测试在软件的质量保证中起着重要的作用。通常我们把性能指标全部归结到硬件,操作系统和开发环境上,而忽略了代码本身性能上的考虑。性能需求指标中,稳定性、并访支撑能力以及安全性都很重要。作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。5.5 企业员工信息管理系统的测试在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试:• 界面测试:在不开启Web服务器的情况下,反复点击网页上的超链接,测试其连接情况,直到所有的链接都达到预期的效果。• 功能测试:对网站的几大功能模块逐一测试,尽最大可能发现起潜在的错误。• 性能测试:将程序以局域网的形式发布,查看其是否满足多用户的要求。• 需求测试:根据需求分析的内容,测试网站是否和当初的设计一样。通过这几方面的测试,我及时修正了系统中存在的问题,很好的提高了系统的性能,达到了预期目标。& 总结本系统开发的技术难点主要有两个方面:一是否业务逻辑的理解;二是数据库逻辑结构的设计。业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。只有在准确不理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的。数据库设计是应用系统开发的另一个难点,只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性、可扩展性。数据库设计是直接影响系统运行情况及程序设计的一个重要因素。因此,在开发相关数据库方面的管理系统时,都需要充分考虑到科学性,结构性,规范性,安全性,可扩展等相关问题。本次毕业设计是我工作前一次很好的演练和实践的机会。是培养独立思考问题和自学能力的锻炼,使我意识到必须努力学习才能才工作中体现自己的价值,适应社会的需要。& 参考文献[1] 刘洋.精通Hibernate.北京:电子工业出版社.2005[2] 张秋余,杨玥. 基于用例的需求建模方法[J]. 计算机工程与设计,39-3541[3] 张桂元.贾燕枫.Eclipse开发入门与项目实践.北京:人民邮电出版.2006[4] 张桂元.Struts开发入门与项目实践.北京:人民邮电出版社.2005[5] 史济民.软件工程――原理、方法与应用.北京:高等教育出版社.2002[6] Solid Quality Learning. Microsoft SQL Server 2005:Database Essentials Step by Step. Microsoft Press. 2007[7] 陆荣幸,郁洲. J2EE平台上MVC设计模式的研究与实现[J]. 计算机应用研究,4-146.[8] MattheMacDonal.管理信息系统[J].电子工业出版社.:102-108.[9] 孙卫琴.精通Hibernate:Java对象持久化技术详解.北京:电子工业出版社.2005[10] Java Open Source Programming.Joe Walnes,Ara Abrahamian,Mike Cannon-Brookes,Pat Lightbody.Indianapolis,Indiana:Wiley Publishing,Inc.2004.[11] 何成万,余秋惠. MVC模型2及软件框架Struts的研究[J].计算机工程,4-276.[12] Gerald Post. Albert Kagan. Database management system:design consideration and attribute.2003[13] John B.Miner.Donald P.Crane. Human Resource Management.Harper Collins College Publishers. 1995[14] 李小喆,张晓辉,李祥胜.SQLServer 2000管理及应用系统开发[M].北京:人民邮电出版社.2002& 致谢在此论文完成之际,我衷心的感谢我的导师詹恩奇老师,感谢他对我的悉心指导。詹老师严谨的治学精神,忘我的工作热情,丰富的实践经验,高尚的品德和渊博的知识使我受益颇深。我不仅在学习能力,科研能力上取得很大的进步,而且学到了许多为人处世的道理。在论文写作过程中,从资料收集,开题报告,撰写初稿到修改定稿,詹老师从多个方面悉心指导,我才能顺利完成这篇论文。在学习和生活中,恩师所给予的至真至诚的关怀和谆谆教导,我将终生铭记,并将恩师作为今后工作和学习中的楷模,努力工作,以更加出色的成绩回报恩师。感谢参加论文评审的各位专家,他们为本文提出了很有价值的意见和建议。同时还要感谢信息系的领导和老师们多年来对我的培养和支持,是他们为我提供了良好的学习环境和机会。感谢我的父亲、母亲,正是他们这么多年以来的关心,鼓励和支持,才使得我可以走到今天,而且有勇气和信心继续努力下去。
相关热词搜索:
今日推荐:}

我要回帖

更多关于 课题开题报告怎么写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信