毕业论文员工信息管理系统_第1页
毕业论文员工信息管理系统_第2页
毕业论文员工信息管理系统_第3页
毕业论文员工信息管理系统_第4页
毕业论文员工信息管理系统_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

学号安徽工业大学工商学院毕业设计(论文)员工信息管理系统教学系: 指导教师: 专业班级: 学生姓名: 二零一贰年五月毕业设计(论文)任务书学生姓名陆斌专业班级电信1061指导教师詹恩奇工作单位武汉理工人学信息学院设计(论文)题目设计(论文)主要内容:企业员工信息管理系统设计结合企业员工管理工作的实际工作需要和员工信息管理工作的发展需求,运用数据库技术,设计出一套企业员工信息管理系统。期望能降低员工管理工作的成本,减轻企业管理人员的负担,方便员工信息的更新、维护和查询,增加数据的可靠性;从而开拓企业员工管理工作的新局面,提高管理水平。系统要求提供员工基本信息的维护功能,管理人员能够通过此项功能及时添加、修改和删除员工的基本信息;提供每位员工每月业绩的信息,使得管理人员能迅速地掌握每位员工业务方面的情况;为了维护数据的安全,系统对不同的用户应赋予不同的权限,并对所有的信息都应具有查询、统计和打印等基本操作功能。要求完成的主要任务及其时间安排:(1)(2)(3)(1)(2)(3)(4)第4周-第5周,第6周-第8周,第9周-第13周,第14周-第15周,熟悉数据库应用,根据企业员工信息管理任务要求,制定系统设计方案:完成企业员工信息管理系统程序设计及调试工作;完成毕业设计论文的撰写和修订。必读参考资料:[11Connolly,T.M.著,何玉洁译.数据库设计教程(第二版),2005萨维奇,施平安,李牧译.Java完美编程(第3版).清华大学出版社,2008SolidQualityLearning・MicrosoftSQLServer2005:DatabaseEssentialsSt^pbyStep.MicrosoftPress,2007指导教师签名:教研室主任签名:指导教师签名:毕业设计(论文)开题报告题目 企业员工信息管理系统设计目的及意义(含国内外的研究现状分析):随着我国国民经济建设的蓬勃发展和社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很人程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。员工信息管理作为企业内部的一种员工基本档案管理也是如此,由于企业的人数较多,每一位员工的具体实际情况也不尽相同,如果没有一个完整的员工信息管理系统去完成,将使工作变得复杂冗烦,并且对于工作的效率也将使一个致命的打击,使无论如何也无法适应现代社需要的。另外,目前部分企业使用的员工信息管理系统只有信息的录入,修改和删除的功能,而不具有信息查询的功能,这对于企业的信息管理工作来说是一个很遗憾的事情。因此,开发一套功能完整,设计合理,使用方便的企业员工信息管理系统成为很有必要的事情。企业员工信息管理系统的内容功能对于企业的决策者和管理者来说都至关重要,所以企业员工信息管理系统应该能够为管理者提供充足的信息和快捷的查询与管理手段。作为计算机应用的一部分,使用计算机对企业员工信息进行管理,具有手工管理所无法比拟的优点•例如:检索迅速、查找方便、可靠性高、存储量人、保密性好、寿命长、成本低等。这些优点能够降低员工管理工作的成本,减轻企业管理人员的负担,方便员工信息的更新、维护和查询,增加数据的可靠性;从而提高企业员工信息管理的效率,开拓企业员工管理工作的新局面,提高管理水平,是企业管理的科学化、正规化、信息化管理,与世界接轨的重要条件。基本内容和技术方案:企业员工信息管理系统的开发主要包括后台数据库的建立(如:员工的基本信息)和维护(如员工信息的添加和删除以及登陆密码的修改)及前端应用的开发,对于前者要求建立起数据库一致性和完整性、数据安全性好的数据库,而对于后者则要求应用程序功能准确、完善,易使用等特点。该企业员工信息管理系统具备三方面的功能:一方面是员工用户,员工通过输入工号和密码进卞该系统后,可以进行一些基础查询(员工信息查询、部门信息查询、)、业务信息管理(业务信息查询)重新登陆系统;一方面管理人员进入该系统则比普通员工多一些权限:信息输入与修改、信息查询。数据模型分析与设计数据库模型描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述(例如树、表等);模型的操纵部分规定了数据的添加、删除、显示、维护、打印、查找、选择、排序和更新等操作。数据库模型的分类:分层模型、关系模型、网络模型和对象模型。本课题选择的关系模型,关系模型是目前最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。关系数据模型具有下列优点:•关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。•关系模型的概念单一。无论实体还是实体之间的联系都用关系表示。对数据的检索结构也是关系(即表)。所以其数据结构简单、清晰,维护易懂易用。

•关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。所以,关系数据模型诞生以后发展迅速,深受拥护的喜爱,这也是本课题选取关系数据模型的原当然,关系数据模型也有缺点,其中最主要的缺点是,由于存取路件对用户透明,查询效率往往不如非关系数据模型。因此为了提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。本课题的关系数据模型的数据结构可分为三个表来表示:员工信息表、部门信息表、业务信息表:员工信息表用于记录学生的基本信息;部门信息表用于记录部门的基本信息;业务信息表用于记录员工业务方面的基本信息。员工信息E・R图门编号部门地点主管员工信息E・R图门编号部门地点主管部门类别部门信息E・R图业务信息E・R图根据对系统进行需求分析,本系统将分为4个模块:•员工信息管理:管理员工基本信息,包括个人信息的添加.修改、删除。•业务信息管理:管理员工业务的基本信息,包括业务项目信息的添加、修改和删除。•部门信息管理:管理部门的基本信息,包扌舌部门信息的添加、修改和删除。•信息查询:查询已经登记的信息,包扌舌员工的基本信息、业务的基本信息。功能结构图:企业员工信息管理系统功能结构如下图所示。企业员工管理系统功能结构图进度安排:(5) 第4周-第5周,中外文文献的检索、阅读,并完成开题报告;(6) 第6周-第8周,熟悉数据库应用,根据企业员工信息管理任务要求,制定系统设计方案;(7) 第9周-第13周,完成企业员工信息管理系统程序设计及调试工作;(8) 第14周-第15周,完成毕业设计论文的撰写和修订。4・指导老师意见:指导教师签名: 年月口注:1.开题报告应根据教师下发的毕业设计(论文)任务书,在教师的指导下山学生独立撰写,在毕业设计开始后三周内完成:设计的目的及意义至少800字,基木内容和技术方案至少400字;指导教师意见应从选题的理论或实际价值出发,阐述学生利用的知识、原理、建立的模型正确与否、学生的论证充分否、学生能否完成课题,达到预期的13标。郑重声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包括任何其他个人或集体己经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。本人签名: 日期:在当今社会,互联网空前的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。考虑到当前人屋企业的企业员工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纸漏。因此根据部分企业提供的需求,设计此企业企业员工管理系统,以帮助企业达到企业员工管理办公自动化、节约管理成本、提高企业工作效率的目的。根据实际需求,“企业员工信息管理系统”项目采用模块化的设计思想,在WindowsXP操作系统环境卞,搭建JSP运行环境JDK+TOMCAT,通过使用JAVA脚本语言完成动态的、交互的web服务器应用程序,实现员工个人信息查询、个人业绩查询及用户密码修改功能。本系统具有多方面特点:系统功能完备,用户使用方便简捷,人性化的用户界面,安全保密设置齐全,人人减少了操作人员和用户的工作负担,提高了企业员工信息管理的工作效率和企业的信息化的水平。关键词:java:jsp;信息管理ABSTRACTNowadays,thehiternetdevelopmentisfast,bimgingpeople'sworkandlifetfemendousconvemencewithefficientlv.Atpresentagreatdealofbusmessenterpiiseofthebusinessenteipnseemployeethemanagementisplacedmthehandicraftliomewoikstagestill,notonlytheefficiencyislowly,alsousuallybecauseofmanagementoflnunodestybutappearenor.Needtheiefoieprovidedaccoidingtopartsofbusinessenterpiises,designthisbusmessenteipnsebusinessenteipnseemployeetomanagesystem.Theinaidofbusinessenteipnseattainsabusinessenteipiiseemployeeamanagementtotransacttheautomation,economymanagementcost^exaltationthebusinessenteipnseworkefficiencyofpuipose・"Businessenterpriseemployeetheinfoniiationmanagementsystem"itemadoptionmoldpiecedesignthoughtforturn,buildtheJSPmovementenviiomnentJDKundertheWindowsXPoperatesystemenviiomnentandTOMCATSeivice.PasstheusageJAVAscriptlanguagecompletionadynamicstateof^alternantwebserveiapplicationproceduie.Canyoutemployee'spersonalmfbimationsealch,personalaccomplislunentsearchandthecustomerpasswordmodificationfiinction.Thissystemhasavariouschaiacteiistics:Thesystemfxinctioniscomplete,usmgconvemently,thecustomermteifacehumamzation,thesafetykeepssecretaconstitutionwell-found,reducedanoperationtheworkofthepeisoimelandcustomerburdenconsumedly.Raisetheworkefficiencyofthebusinessenteipnsemfbimationmanagementandthemfbimation-basedlevelofthebusmessenteipiise.KeyWords:java;jsp;Theinformationmanage#4系统实现1用户操作文件总体架构用户操作模块主要包括用户登录和人员管理模块,具体功能如下:用户登录模块:用于登录系统。人员管理模块:用于浏览、添加和修改人员信息。4.1.1用户登录模块设计用户登录模块是用户进入主页面的入II,其运行结果如图4.1所示。入力资源管理系统用户名:S码:图4.1用户登录模块运行结果系统登陆是企业员工信息管理中最先使用的功能,因为用户登陆在数据库中使用的是人员表,人员表中有一个isadmin字段,是来标识是否是管理员的。在登陆时要根据数据库的这个字段来判断此用户是否具有管理员的权限。在网页里添写用户名和密码后点击【登陆】按钮,网页会访问一个URL,这个URL是"logon.do?action=logon",代码如下:<formname=,zusersFormz,method二〃pos action二〃logon.do?action=logon"><tr><tdwidth二〃170"height二"40"align=/,center,z>用户名:</td><tdwidth二〃230〃height二〃40〃><inputnam己二"username"type=,/text"class二"input"〉 </td></tr><tr><tdheight二"40"align=,/center^>密  码:</td><tdheight二"40"><inputname二"password"type二"password"class二"input">〈/td></tr><tr><tdheight二"40"colspan二"2"align=z,centerz,><inputtype二"submit"name二"Submit"value二"登陆"class二"button"> <inputtype二"reset"name二"Submit2"value二"重置"class二"button"〉"td></tr></form>在这个表单的name的值是usersForm>它是Struts的ActoinForm的实现类在配置文件中的名字,如卞所示:〈form-beanname二"userForm"type二"com.bOS.bPRO_PersonManage.actionform.UsersForm"/>action是Struts的Action的URL,他们在Struts的配置文件中都是已经配好的,如卜所示:<actionpath二"/logon"type二"com.bOS.bPR0_Person5Ianage.action.UsersAction"name二"userForm"scope二"request"><forwardname二"success"path二"/manage,jsp"/><forwardname二"fa订ed"path二"/fa订ed.jsp"/>〈/action〉在这个配置文件中,可以了解到如下信息:根据name二"userForm"可以找到与之相对应的ActionForm的实现类"com.bOS.bPRO_PersonManage.actionform.UsersForm'^根据type二"com.bOS.bPRO_PersonManage.action.UsersAction''可以找到处理用户数据的Action类。根据<forwardname二"success"path二"/manage,jsp"/>和<forwardname二"fa订ed"path二"/fa订ed.jsp"/>可以了解,这个Action返回success时,页面会被转到manage,jsp文件,这就是登陆成功的页面。如果当Action返回fa订ed时,页面会被转到failed,jsp文件,这个文件是当用户登陆失败将要转到的页面。Struts的Action实现类的execute()方法是最先被执行的,这个方法本身也没有具体的事务,而是根据action的参数不同执行相应的方法。在登陆页里面可以找到有一个“action二logon”的字样,它的目的就是在这里做逻辑判断。当action二logon时调用logon()方法。logon0方法从UsersForm中得到用户提交的数据,然后在调用UsersDao()的logonUsers()方法。并且把UsersForm转成Users类做为logonUsers()方法的参数。调用后会返回一个boolean型的值。如果为真,则返回"mapping.findForward("success");"否则返回"mapping.findForward("failed");"也就是当用户登陆成功后,返回给用户登陆成功的页面,登陆失败后返回用户一个登陆失败的页面。那么UsersDao的logonUsers()方法是根据什么得到的返回值呢,现在就让我们看看这个方法。这个方法先通过HibSessionFactory得到一个Hibernate的Session并且升始一个屮务,Session再像使用一个欲编译似的命令似的东西,设定参数、提交事务和最后在关闭Session.o得到一个List里面就存储着所有查询出的结果。根据这个结果就可以判断出该用户是否有登陆的权根了,在返回true或者falseo就这样合法的用户就可以顺利的登陆了。那刚才那些有些类似于欲编译的东西是什么呢,这些就是Hibernate特有的查询语言,被称为Hibernate查询语言(HQL),而它本身也就是使用的JDBC的欲编译技术。4.1.2人员管理模块设计人员管理模块主要包括浏览人员信息、添加人员信息、人员信息的添加、人员信息的修改。此模块文件架构如图4所示。各项管理工作都是在用户成功登陆后的管理页面进行的,在管理控制页面的左侧是各项的相关链接,右侧是操作平台。管理控制页面右侧实际上是一个iframe,如下所示:<tdheight二"550"valign=,,top/z><ifran)ename二"framE”src=,,main・do"width二"100%"height二"100%"frameborder=,/0,/hspace=,/0,/></iframeX/td>在左侧的链接中使用target二"frame"就可以在这个iframe中打开新的链接了。单击“添加人员信息S即打开添加人员信息的页面如图4・2所示。图4.2添加人员信息页面添加人员信息的链接是这样的,如下所示:<tdheight二"22"align=,zcenterz,><ahref二"adduser,do"target二"frame"〉添加人员信息</a></td>在Struts配置文件中,添加人员信息的链接没有使用ActionForm类,也没有使用Action的实现类,如下所示:<actionpath二”/adduser"forward二"/adduser・jsp"/>adduser,jsp文件,只是一个普通的JSP文件,但是它的表单元素都是与UsersForm相对应的,UsersForm如卜所不:packagecom・bOS・bPR0_Person5Ianage・actionform;importcom・bOS・bUti1・DateUtil;importjavax.servlet・http.HttpServletRequest;importorg・apache・struts.action.ActionErrors;importorg・apache・struts.action.ActionForm;importorg・apache・struts.action.Actiotapping;importcom・bOS・bPR0_PersonManage・en.Users;publicclassUsersFormextendsActionForm{publicStringgetContent(){zturncontent;}publicvoidsetContent(Stringcontent){this・content=content;}privateLongid;privateStringusername;privateStringpassword;privateBytesex;privateStringbirthday;privateStringcreatetime;privateByteisadmin;privateStringcontent;publicStringgetCreatetime(){:returncreatetime;}publicvoidsetCreatetime(Stringcreatetime){this.createtime=createtime;}publicLonggetld(){“turnid;}publicvoidsetld(Longid){this・id=id;}publicBytegetlsadminO{zturnisadmin;}publicvoidsetlsadmin(Byteisadmin){this・isadmin=isadmin;}publicStringgetPassword0{“turnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetUsername0{:returnusername;}publicvoidsetUsername(Stringusername){this・username=username;publicvoidreset(ActionMappingargO,HttpServletRequestargl){this・id二null;this・usErnam己二null;this・password二null;this・isadmin二null;this・createtime二null;this・content二null;this・sex二null;this・birthday二null;publicActionErrorsvalidate(ActionMappingargO,HttpServletRequ^stargl){"turnnull;}publicStringtoString0{StringBuffertoStr=newStringBuffer0;toStr.appendC[UsersForm]=[\n");toStr.append(,ztoStr.append(,ztoStr.append(,ztoStr.append(,ztoStr.append(,ztoStr.append(,ztoStr.append(,ztoStr.append(,ztoStr.append(,zid二〃+this・id+";\n");username二"+this・username+password二"+this.password+sex二〃+this.sex+〃;\n〃);birthday二"+this.bitthday+createtime二"+this・createtiniE+isadmin二"+this・isadmin+content二〃+this・content+];\『);:returntoStr.toString();}publicStringgetBirthday(){"turnbirthday;}publicvoidsetBirthday(Stringbirthday){this・birthday=birthday;}publicBytegetSexO{“turnsex;}publicvoidsetSex(Bytesex){this・sex=sex;}publicUserspopulate(){Usersu=newUsers0;u.setld(getld());u.setIsadmin(getlsadminO);u.setContent(getContent0);u.setUsername(getUsernameO);u.setPassword(getPassword0);u.setSex(getSex0);u.setBirthday(DateUtil.parseToDate(getBirthday(),DateUtil.yyyyMMdd));u.setCreat^time(DateUtil.parseToDate(gEtCreatetiniE(),DateUtil.yyyyMMddHHmmss));“turnu;}}UsersForm类中的reset()方法作用是当用户点击"重置”按钮时,清空input输入框的内容,toString()方法覆盖了Object和toString0方法,populate0方法很有,它把UsersForm转化成Users实体类,大人方便了程序在对数据库操作时使用的方便。而且这个方法中还把用户的生口等表单元素的值由字符型转成口期类型。在adduser,jsp页面中的action上可以看到它要提交的URL,如下所示:<formname=/zuserForm,z method二"pos action二"modifyuser・do?action=adduser,zonSubmit=/zreturnuserValidateO;">配置文件中modifyuser的Action实现类是“com.bOS.bPR0_PersonManage.action.UsersAction'^如卞所示:<action path=^/modifyuserz, type=,zcom.bOS・bPRO_PersonManage・action.UsersAction"name=,/userForm/zscope二"session"〉<forwardname二"success"path二"/user・do?action=listusEt"/></action>在UsersAction找到参数action等于adduser时所调用的方法addUsers0,它只是把从UserForm表单转化成的User类做为参数传给了UsersDao的addUsers()方法。在由这个方法向数据库添加人员信息,如下所示:publicvoidaddUsers(Usersusers)throwsHibernateException{users・setCreatetime(newjava.util.Date());Sessionsession=HibSessionFactory.currentSession0;Transactiontx=session・beginTransaction();session.save(users);tx.commit();HibSessionFactory.closeSession0;}如果添加成功页面会被发转到user.do?action=listuser的URL。user,do的配置文件如卜所示:<actionpath二"/user"type二"com.bOS・bPRO_PersonManage・action.UsersAction"name=,/userForm/zscope=/zrequest〃>〈forwardnam己二"success"path二"/Iistuser・jsp"/>

〈/action〉这样就在页面做一次提交时它访问了二次UsersAction,第一次的作用是向数据库中添加信息,随后又把所有人员信息取出来显示给用户,同样UsersAction还只是调用UsersDao,取数据库的具体操作在UsersDao文件中,他这次调用的是listUser0方法,如下所示:publicListlistUser()throwsHibernateException{Sessionsession=HibSessionFactory.currentSession0;Transactiontx=session.beginTransaction();Queryquery=session・createQuery(z,selectufromUsersasuorderbycreatetime");Listlist二query.listO;tx.commit();HibSessionFactory.closeSession0;“turnlist;UsersAction取出从UsersDao中数据,在把它存到request里,然后返回returnmapping.findForward("success");在Strutsr的配置文件里返回页是listuser,jsp。所有用户的信息都在这个页中显示出来。如下所示:<tr><tdheight二"22〃colspan二align二〃left"Xstrongclass二〃textl3">浏览人员信息</strong></td></tr>height二"22"align二height二"22"align二"center">人员姓名〈/td>align二"center">登陆密码</td>height二"22"height二"22"height二"22"height二"22"<tdalign二centeralignalign二centeralign=,/centeralign=,/centeralign=,/center>性别</td>>出生口期</td>>是否管理员</td>>简介</td><td<td<tdalign二align二"center">执行操作</td><td</tr><%Listlist=(List)request・getAttribute("list");if(list!=null&&list.size0>0){Iteratorit=list・iterator0;while(it・hasNext()){Usersu=(Users)it.n^xtO;%><tr><tdheight二"22"align二〃center"><%=StringUti1・notNull(u.getUsername0)%> </td><tdheight二"22"align二〃center"><%=StringUti1・notNull(u.getPasswo:rd())$> </td><tdheight二"22"align=,zcenter,z><%=newByte("1")・equals(u・getS己x())?"男":”女"%></td><tdheight二"22"align=/zcenter"><%=StringUti1・notNull(DateUtil.parseToString(u.getBirthdayO,DateUtil.yyyyMMdd))%> </td><tdheight二"22"align=,zcenter,z><%=newByteC^l^).equals(u.getlsadminO)?^是":"否"%></td><tdheight二"22〃align=,/center,z><%=StringUtil.notNull(u.getContent0)%> </td><tdheight二"22〃align二"center"><ahref=/,selectuser・do?action二selectuser&id=<%=u.g^tld()%>">«參改〈/a>  <ahref=/zmodifyuser.do?action=deleteuser&id=<%=u.getld0%>">删除</a></td></tr><%}}else{%><tr><tdheight二"22"colspan二"7"align二"center">对不起,没有添加人员信息!!!</td></tr><%}%>在显示页中,从request里面的取出数据,如果有则显示在页面上,使用"list!=null&&list.size()>Ow判断如果在没有数据的情况下,将对用户提示说"对不起,没有添加人员信息!!!”。这是添加人员信息的整个过程,在这个过程中,有一部分是用于显示人员信息的,就是"user.do?aetion=listuser,\它是显示人员信息的地址。如果在网页中直接点击这个链接地址,同样也会调用出所有用户的信息。这就是“浏览人员信息”的链接。页面执行后如图4・4所示。图4.4浏览人员信息页面人员信息的列表的最后一列可以对该条记录做删除和修改。删除的链接地址是"mod辻yuser.do?action=deleteuser&id=<%=u.getld()%>n它向Action的实现类提交了两个参数,个是action=deleteuser是固定不变的,另一个是该用户的id这是根据不同记录取出来的。在UsersAction类中根据action的值可以找到与其相对的方法,如卜•所示:privateActionForwarddeleteUser(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletR^sponseresponse)throwsHibernateException{Longid=newLong(request・getParameter("id"));Usersusers=newUsers0;users・setld(id);dao.deleteUsEts(users);:returnmapping・findForward("success");}在这个方法里得到页面提交过来的用户ID,把这个id存在Users表中的实例中,传给dao的deletel'sersO方法,我们可以看到关于数据库方面的操作都被封装在Da。中。具体的删除操作的代码如卞所示:publicvoiddeleteUsers(Usersusers)throwsHibernateExc己ption{Sessionsession=HibSessionFactory・currentSession0;Transactiontx=session・beginTransaction();session.delete(users);tx.commit();HibSessionFactory.closeSession0;}删除用户时和添加用户一样都是先得到一个H让ernate的Session,后调用它的delete()方法就可以了,操作完成后千万记得要提交事务,即调用commit()方法,和关闭Session^修改人员的信息时必须先把要修改的人员信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action-个用户ID,用来查询出用户信息,如下所示:href=z'selectuser・do?action=selectuser&id=〈%=u.getId()%>">«參改</a>根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示:〈actionpath=,//selectuserz,type=,,com.bOS・bPRO_PersonManage・action.UsersAction"scope二"request"〉<forwardname二"success"path二"/updateusEr・jsp"/></action>它调用了UsersAction类,返回到updateuser,jsp文件,在UsserAction中同前面一样也是根据action的参数来识别出调用selectUser0方法的,方法实现如下所示:privateActionForward selectUser(ActionMappingmapping, ActionFormform,HttpServletRequestrequest,HttpServletR^sponseresponse)throwsHibernateException{Longid=newLong(request・getParameter("id"));Usersu=dao.loadUsers(id・longValue());request・setAttribute("user",u);:returnmapping・findForward("success");}这个方法使在调用Dao的1oadUsresO的方法后,得到一个Users的返回值,里面存着与此id相对应的人员信息,然后在把它存在request里。loadUsres()方法实现如I、所示:publicUsersloadUsers(longid)throwsHibernateException{Sessionsession=HibSessionFactory.currentSessionO;Transactiontx=session.beginTransaction();Usersu=(Users)session.1oad(Users.class,newLong(id));tx.commit();HibSessionFactory.closeSession0;returnu;}Mbernate在使用这个load()方法时比较特别,需要传入实体类的class,和要查询的用户ID。得到的返回值需要做一下强制类型转换。显示用户信息的页面在updateuser,jsp中,如图4.5所示。图4.5修改用户信息页面首先要从request中取岀人员信息,在转化成Users类型,然后显示在页面中。在显示是否是管理员的项时比较人特别。如下所示:<tdwidth二"33%"height二"22"align二"center">是否管理员:</td>dwidth二"67%"height二"22〃align=//left">〈inputname=,zisadminhelptyp己二"checkbox"<%=newByte(/zlz,)・equals(u.getlsadmin0)?/zchecked,/:onClick=//javascript:adminCheckedO value=zr<%=u.getIsadmin()%>"></td><inputtyp己二"hidden"name二"isadmin"value=,/<%=u.getIsadmin()%>">>实际想要提交的表单的名字是isadmin,而在显示checkbox时用的name是isadminhelp。Isadmin确使用hidden类型做为表单提交名字,这和checkbox的特性有关。在使用javascrip对checkbox的value控制时。当value的值如果像这样“value二"%=u.getlsadmin()%>""被写死时,使用javascrip是对value的值改变后,在提交表单时是无效的。于是我们就用hidden做为表单提交项,而〈input name二"isadminhelp'" typ己二"checkbox" <%=newByte(z,l“).equals(u.getlsadmin())?,zchecked,z://,,%> onClick=//javascript:adminCheckedOvalue=,z<%=u・getlsadmin()%>">只是在显示给用户的看的。在表单不接收isadminhelp的value,只接收isadmin的valueo4.2技术难点3.1参数传递中的中文乱码问题由于浏览器中的参数传递是按字节传送,因此英文和数字不会有任何的问题,而中文汉字则由两个字节组成。为了解决这个问题,使用了下面的两种方法:®<%request.setCharacteiEncodingC<gb2312,,);%>®iequest.getPaiameter("Passwoid").getBytes("ISO-8849-l"),"GB2312");4.3.2图片处理在SQLServer2000的数据库中可以存放任何格式的图片,但是要将其转换为二进制的数据存入数据库,在调用时再将二进制数据转换为图片,这样虽然便于管理,但是在当前国内的网速来看,这样的方法是在是不可取。因此本系统的图片均是存放的相对路径,将图片放在系统根目录下的image文件夹中,按类分好,然后将其相对路径存入数据库的对应列中,这样可以大人提高网页浏览的速度。4.3.3HQL语言本系统中,所有对数据库的操作都由Mbernate来完成,因此用到了人量的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) 程序员自创的词语,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人员使用一些专业术语,并且混杂着自己的理解出现Bu名,主要是由于开发过程中团队合作没又明确的分工,没有统一的规范用语。4) 页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况只出现在没有CSS定义的情况卞,或是已经定义的CSS,开发人员在开发过程中没有调用。5) 标题相近的程序及模块,把标题弄混。这种情况多是因为业务方面的定义名称很相似或很类似,并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。2功能测试顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测试中需要注意的有:1) 查询功能中,有按单一查询条件进行查询的,也有按多个查询条件组合查询的,这里要注意多个查询条件之间的关系,还有一些常识性的问题,比如按月查询,闰年中二月的天数。2) 录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。3) 测试删除功能中需要注意的是单击”删除”按钮后,一般会出现提示信息,询问是否确定删除。通常情况下,我们单击”确认”按钮查看信息是否被删除掉了,而忽略了单击“取消”按钮后程序的反应,这时有可能的是没有删除,还有一种可能是即便单击了“取消”按钮,也一样删除了数据。另外,在删除多条记录的时候,要注意连续选中的几条记录是否真正都被删除了,即如呆再按照这种查询方式查询,是否还能查询出来。有的时候需要在数据库中设一个标志位,而不是真正的物理删除。所以在下一次查询中,可能还会被查询出来,这主要是因为在查询条件中没有将标志位考虑在内。4)关于修改功能的测试,主要是看修改确认后是否数据真正已被修改了。这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。5.3需求测试针对需求测试,是测试中很重要的一个环节。因为需求是在软件设计,开发乃至软件测试中重要的依据。要针对需求测试,首先就要对项目的需求和业务有一定的了解。这些需求很多时候是在实现增、删、查、改这些基本功能之上,针对项目和相关业务所作的一些逻辑上的控制。这就要求程序员在设计和编码的时候要去充分理解考虑需求。5.4性能测试性能测试在软件的质量保证中起着重要的作用。通常我们把性能指标全部归结到硬件,操作系统和开发环境上,而忽略了代码本身性能上的考虑。性能需求指标中,稳定性、并访支撑能力以及安全性都很重要。作为程序员需要评估该模块在系统运营中所处的坏境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。5.5企业员工信息管理系统的测试在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试:・界面测试:在不开启Web服务器的情况下,反复点击网页上的超链接,测试其连接情况,直到所有的链接都达到预期的效果。・功能测试:对网站的几人功能模块逐一测试,尽最大可能发现起潜在的错误。•性能测试:将程序以局域网的形式发布,查看其是否满足多用户的要求。・需求测试:根据需求分析的内容,测试网站是否和当初的设计一样。通过这几方面的测试,我及时修正了系统中存在的问题,很好的提高了系统的性能,达到了预期目标。总结本系统开发的技术难点主要有两个方面:一是否业务逻辑的理解:二是数据库逻辑结构的设计。业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。只有在准确不理解一个系统的业务逻辑之后才町能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的。数据库设计是应用系统开发的另一个难点,只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性、可扩展性。数据库设计是直接影响系统运行情况及程序设计的一个重要因素。因此,在开发相关数据库方面的管理系统时,都需要充分考虑到科学性,结构性,规范性,安全性,可扩展等相关问题。本次毕业设计是我工作前一次很好的演练和实践的机会。是培养独立思考问题和自学能力的锻炼,使我意识到必须努力学习才能才工作中体现自己的价值,适应社会的需要。参考文献刘洋.精通Hibernate.北京:电子工业出版社.2005张秋余,杨坍•基于用例的需求建模方法[J].计算机工程与设计,2006.19:3539-3541张桂元.贾燕枫.Eclipse开发入门与项目实践.北京:人民邮电出版.2006张桂元.Struts开发入门与项目实践.北京:人民邮电出版社.2005史济民.软件工程一一原理、方法与应用.北京:高等教育出版社.20026SolidQualityLearning・MicrosoftSQLServer2005:DatabaseEssentialsStepbyStep・MicrosoftPress・2007陆荣幸,郁洲.J2EE平台上MVC设计模式的研究与实现[J].计算机应用研究,2003,03:144-146.MattheMacDonal.管理信息系统[J].电子工业出版社.2003.3-8:102-108.孙卫琴.精通Hibernate:Java对象持久化技术详解.北京:电子工业出版社.2005L10]JavaOpenSourceProgramming・JoeWalnes,AraAbrahamian,MikeCannon~Brookes,PatLightbody・Indianapolis,Indiana:WileyPublishing,Inc・2004.[11]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002,06:274-276.L12]GeraldPost・AlbertKagan・Databasemanagementsystem:designconsiderationandattribute.2003-13]JohnB・Miner・DonaldP・Crane・HumanResourceManagement・HarperCollinsCollegePublishers.1995[14]李小詰,张晓辉,李祥胜・SQLServer2000管理及应用系统开发[M]•北京:人民邮电出版社・2002致谢在此论文完成之际,我衷心的感谢我的导师詹恩奇老师,感谢他对我的悉心指导。詹老师严谨的治学精神,忘我的工作热情,丰富的实践经验,高尚的品德和渊博的知识使我受益颇深。我不仅在学习能力,科研能力上取得很大的进步,而且学到了许多为人处世的道理。在论文写作过程中,从资料收集,开题报告,撰写初稿到修改定稿,詹老师从多个方面悉心指导,我才能顺利完成这篇论文。在学习和生活中,恩师所给予的至真至诚的关怀和谆谆教导,我将终生铭记,并将恩师作为今后工作和学习中的楷模,努力工作,以更加出色的成绩回报恩师。感谢参加论文评审的各位专家,他们为本文提出了很有价值的意见和建议。同时还要感谢信息系的领导和老师们多年来对我的培养和支持,是他们为我提供了良好的学习环境和机会。感谢我的父亲、母亲,正是他们这么多年以来的关心,鼓励和支持,才使得我可以走到今天,而且有勇气和信心继续努力下去。毕业设计(论文)原创性声明和使用授权说明

原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名: 日 期: 指导教师签名: 日 期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩E卩、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。日期:作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影EC、缩E卩或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名: 日期:年月日导师签名:日期:年月日指导教师评阅书指导教师评价:—、撰写(设计)过程1、 学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格口不及格2、 学生掌握专业知识、技能的扎实程度□优 □良 □中 □及格 口不及格3、 学生综合运用所学知识和专业技能分析和解决问题的能力□优 □良 □中 □及格 口不及格4、 研究方法的科学性;技术线路的可行性;设计方案的合理性□优 □良 □中 □及格 口不及格5、 完成毕业论文(设计)期间的出勤情况□优 □良 □中 □及格 口不及格二、 论文(设计)质量1、 论文(设计)的整体结构是否符合撰写规范?□优 □良 □中 □及格 口不及格2、 是否完成指定的论文(设计)任务(包括装订及附件)?□优 □良 □中 □及格 口不及格三、 论文(设计)水平1、 论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格口不及格2、 论文的观念是否有新意?设计是否有创意?□优 □良 □中 □及格 口不及格3、 论文(设计说明书)所体现的整体水平□优 □良 □中 □及格 口不及格建议成绩:□优 □良□中□及格口不及格(在所选等级前的□内画“)指导教师: (签名)单位: (盖章)年月曰评阅教师评阅书评阅教师评价:一、 论文(设计)质量1、 论文(设计)的整体结构是否符合撰写规范?□优 □良 □中 □及格 口不及格2、 是否完成指定的论文(设计)任务(包括装订及附件)?□优 □良 □中 □及格 口不及格二、 论文(设计)水平1、 论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格口不及格2、 论文的观念是否有新意?设计是否有创意?□优 □良 □中 □及格 口不及格3、 论文(设计说明书)所体现的整体水平□优 □良 □中 □及格 口不及格建议成绩:口优□良 □中□及格□不及格(在所选等级前的□内画“J”)评阅教师:(签名)单位:(盖章)年月日

教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:-答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□不及格□不及格□不及格□不及格2、 对答辩问题的反应、理解、表达情况□优 □良 □中 □及格3、 学生答辩过程中的精神状态□优 □良 □中 □及格二、论文(设计)质量1、 论文(设计)的整体结构是否符合撰写规范?□优 □良 □中 □及格 口不及格2、 是否完成指定的论文(设计)任务(包括装订及附件)?□优 □良 □中 □及格 口不及格三、论文(设计)水平1、 论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格口不及格2、 论文的观念是否有新意?设计是否有创意?□优 □良 □中 □及格 口不及格3、 论文(设计说明书)所体现的整体水平□优 □良 □中 □及格 口不及格评定成绩:□优 □良□中□及格口不及格(在所选等级前的□内画“ )教

温馨提示

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

评论

0/150

提交评论