高校失物招领系统_第1页
高校失物招领系统_第2页
高校失物招领系统_第3页
高校失物招领系统_第4页
高校失物招领系统_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

摘要随着学校的面积和人数的扩大,学生和教职工在校园里参加的各种活动增多,因此这样就很容易造成物品遗失的情况,几乎大部分人都有在校园中丢失物品,但是传统的寻找物品的方式是在校园张贴寻物启事和到朋友圈转发寻物告示,不仅效率低下,而且很容易对失主造成一定的经济损失。本系统是基于JSP+Spring+SpringMVC+Hibernat等技术的整合开发的系统,采用基于方法设计的SpringMVC分层体系框架,全部的业务逻辑都交给Spring容器进行管理。系统采用B/S体系结构和MySql数据库服务器,服务器用的是开源的TomcatREF_Ref39528984\r\h[1]。本系统实现了前台和后台管理功能,前台功能其中包括了用户的登录、用户注册、用户发布招领信息、用户发布寻物信息、用户发布感谢留言信息、还有管理员设置系统的公告信息等功能;后台功能包括用户管理、招领信息和寻物信息管理、等功能、系统设置等功能;本系统给线上和线下交流提供了方便,不仅降低失物被冒领的概率,而且提供平台,对帮助找到失物的人,给他们夸赞和嘉奖,感谢和肯定他们的行为,鼓励更多人有一个乐于助人的心,使我们的校园充满正能量。关键词:失物招领;B/S模式;SpringMVC;MySqlTheDesignandImplementationoftheLostandFoundSysteminCollegesAbstractWiththeexpansionoftheschoolareaandthenumberofstudents,studentsandfacultymembersparticipateinvariousactivitiesonthecampus,soitiseasytocausethelossofitems.Almostmostpeoplehavelostitemsonthecampus,butthetraditionalThewaytofindthingsistopostanoticeaboutfindingthingsoncampusandforwardingnoticesaboutfindingthingstofriends.Notonlyisitinefficient,itisalsoeasytocauseacertaineconomiclosstotheowner.ThissystemisbasedontheintegrateddevelopmentofJSP+Spring+SpringMVC+Hibernatandothertechnologies.Itadoptsthemethod-basedSpringMVClayeredsystemframework,andallbusinesslogicishandedovertotheSpringcontainerformanagement.ThesystemusesB/SarchitectureandMySqldatabaseserver,theserverusesopensourceTomcat.Thesystemimplementsthefrontdeskandbackgroundmanagementfunctions.Thefrontdeskfunctionsincludeuserlogin,userregistration,userpostinginformation,userpostingsearchinformation,userpostingthankyoumessage,andadministratorsettingsystemannouncementinformation.;Backgroundfunctionsincludeusermanagement,recruitinginformationandfindinginformationmanagement,andotherfunctions,systemsettingsandotherfunctions;Thissystemprovidesconvenienceforonlineandofflinecommunication.Itnotonlyreducestheprobabilityofbeinglost,butalsoprovidesaplatformtopraiseandrewardthepeoplewhohelpedfindthelost.Thankandaffirmtheirbehaviorandencouragemorepeople.Havingahelpfulheartmakesourcampusfullofpositiveenergy.Keywords:lostandfound;B/Smode;SpringMVC;MySqlPAGE11目录第1章绪论 41.1系统开发的背景和目标 41.1.1系统开发的背景 41.1.2系统开发的目标 41.2系统的主要功能和特点 51.3设计开发的方法和工具的选择 51.4论文的内容以及的结构安排 5第2章系统规划 72.1初步需求分析 72.2总体结构 82.3可行性研究 82.3.1经济可行性 82.3.2技术可行性 92.3.3社会可行性 9第3章系统分析 103.1功能分析 103.1.1系统用例图 103.1.2用例规约 113.2概念数据建模和对象关系建模 203.2.1系统类图 203.2.2对象关系模型 203.3动态建模 213.3.1顺序图 213.3.2通信图 243.3.3系统分析类图 263.3.4活动图 273.3.4状态图 28第4章系统设计 294.1总体设计 294.2数据库设计 294.3UI设计 33第5章系统实现 365.1关键代码分析 36总结 51谢辞 52参考文献 53附录 54附录1程序源代码 54第1章绪论1.1系统开发的背景和目标1.1.1系统开发的背景随着学校的使用面积和人数的增加,学生和教职工在校园里参加的各种活动增多,因此这样就很容易造成物品遗失的情况,几乎大部分人都有在校园中丢失物品,但是传统的寻找物品的方式是在校园张贴寻物启事和到朋友圈转发寻物告示,不仅效率低下,而且很容易对失主造成一定的经济损失。所以很多同学因为麻烦的原因丢失了物品都没有去尝试找回,除非是对自己非常重要的东西,才会到互联网上寻求帮助,但是没有一个适合的失物招领平台可以提供帮助。虽然目前学校有失物招领中心,但是很少人是通过失物招领中心来登记或寻找物品,所以很多同学要么是没有去失物招领中心寻找东西,要么是在失物招领中心找不到丢失的物品,这就造成失物招领中心有很多东西无人认领,超多存放时间后就捐赠出去,每个教学楼和饭堂都有一个存放失物的地方,只有少部分丢失物品的人最终找到自己的东西。造成这种现象的原因是学生怕麻烦,也很少人知道失物招领中心的存在,当然也不会留意学校的失物招领公告栏,还有很多同学觉得自己丢失的物品不贵重,觉得丢了就丢了,无所谓。因此有感而发想开发本系统。本系统的开发会给全校师生带来方便,只需要在网上注册账号,在线发布失物招领或寻物启事,让更多的人看到这些失物的信息后可以帮忙留意寻找一下,捡到东西的人也可以在平台上发布拾捡到的物品信息,又或者是把捡到的物品交到失物招领中心平台,由管理员进行登记并发布招领信息REF_Ref39529897\r\h[2],失主可以通过这些发布的信息确定是否是自己的物品,确认是自己的物品后就可以进行招领。本系统给线上和线下交流提供了方便,不仅降低失物被冒领的概率,而且提供平台,对帮助找到失物的人,给他们夸赞和嘉奖,感谢和肯定他们的行为,鼓励更多人有一个乐于助人的心,使我们的校园充满正能量。1.1.2系统开发的目标目标是设计一套方便的使用的高校失物招领管理系统,让失物招领信息的管理变得简单清晰化,变得易于管理,便于人为操作。可以为全校的师生带来方便REF_Ref39530006\r\h[3],通过本系统将失主和拾主快速地联系到一起,做到精确的拾物归还和失物认领的目的。而且通过搭建的这个失物招领平台系统,一方面减少了学生的一些不必要的经济损失,而另一方面就是对那些拾金不昧的行为加以表扬,可以为学生们带来正能量的引导REF_Ref39529354\r\h[4],发扬拾金不昧的美好品德和提高大学生的道德水平,建设美好和谐的校园文化,让校园充满正能量。1.2系统的主要功能和特点失物招领系统的主要功能是帮助用户进行快速高效地失物招领,是基于用户的信息管理,其核心功能是对物品信息的增删改查。物品信息分为招领物品信息和寻物物品信息,核心功能分为发布招领信息和发布寻物信息。发布招领信息具体流程为,捡到物品的用户,注册并登录系统,填写发布捡到物品的信息,保存并提交发布,等失主联系然后归还物品,并由失主确认归还。发布寻物信息具体流程为,注册并登录系统,填写发布丢失物品的信息,保存并提交发布,等拾主联系然后归还物品,并由拾主确认归还。高校失物招领管理系统既实现了对于用户信息的管理,又实现了对于物品信息的管理,还兼顾到了各个功能模块之间的协调合作,共同完成校园失物招领管理系统的业务需求。本系统具有几个明显的特点:界面简洁友好,功能使用方便,系统开发周期不长,容易维护并且有良好的可扩展性。1.3设计开发的方法和工具的选择本系统是基于JSP+Spring+SpringMVC+Hibernat等技术的整合开发的系统,采用基于方法设计的SpringMVC分层体系框架,全部的业务逻辑都交给Spring容器进行管理。系统采用B/S体系结构和MySql数据库服务器REF_Ref39529593\r\h[5],服务器用的是开源的Tomcat。1.4论文的内容以及的结构安排第一章绪论:失物招领系统分析与设计的灵感来源,失物招领系统的功能和特点以及系统开发的目标,失物招领系统的开发的工具选择REF_Ref39529583\r\h[6]。第二章系统规划:对失物招领系统的初步需求分析和失物招领系统的可行性研究分析;第三章系统分析:对失物招领系统的功能进行分析与建模;第四章系统设计:对失物招领系统设计包括总体结构、数据库逻辑模型设计;第五章系统实现:对失物招领系统的关键代码分析,总结和致谢。第2章系统规划2.1初步需求分析(1)系统描述本系统将失主和拾主直接快速地联系在一起,做到精确的拾物归还和失物认领REF_Ref39529572\r\h[7]。(2)系统对象系统对象:主要的对象为失物招领系统,游客、用户,管理员,其核心对象是注册用户。(3)对象属性注册用户:用户ID、用户名、密码、年级、姓名、联系电话、邮箱、qq、状态、创建时间、最后一次登录时间、是否管理员(4)系统功能系统功能:本系统实现了前台和后台管理功能,前台功能其中包括了用户的登录、用户注册、用户发布招领信息、用户发布寻物信息、用户发布感谢留言信息、还有管理员设置系统的公告信息等功能;后台功能包括用户管理、招领信息和寻物信息管理、等功能、系统设置等功能;(5)系统对象行为注册用户:注册用户可以登录进入系统。注册:游客可以注册成为系统用户。搜索:用户可以搜索相关失物招领信息。招领:用户可以查看招领信息和发布招领信息。寻物:用户可以查看寻物信息和发布寻物信息。感谢留言:用户可以查看、发布感谢留言。用户中心:用户进入用户中心可以查看、修改用户信息。管理员:用户管理:管理员可以管理用户,包括查看、增加和删除用户信息。物品管理:管理员可以管理失物招领的物品,包括查看、删除和导出招领和寻物信息。公告管理:管理员可以管理系统公告,包括查看、增加和删除系统公告。感谢留言管理:管理员可以管理感谢留言,包括查看和删除感谢留言。2.2总体结构系统采用SpringMVC框架搭建,系统遵循MVC模式,可以让整个系统的代码更容易开发和使用。整个失物招领系统分为前端展示模块,后端逻辑模块和数据库数据存储模块REF_Ref39529544\r\h[9]。图SEQ图\*ARABIC1系统总体结构图2.3可行性研究2.3.1经济可行性本系统实现的是一个失物招领管理系统,系统本身就并不是很复杂,实现起来相对来说就比较简单。由于Java在Web开发上的优势,本系统的开发时间也不需要太长,因此对成本的要求并不是太高。而且开发所需的工具都是免费的,也不需要高性能的设备支持,减少了传统的失物招领方式的经济损失,还提高了寻物的效率,经济上可行。2.3.2技术可行性本系统采用Java作为程序开发语言,使用MySql数据库系统进行数据存储,数据库语言简单易懂,项目开发环境为JDK8.0和Eclipse。本系统是基于JSP+Spring+SpringMVC+Hibernat等技术的整合开发的系统,采用SpringMVC基于方法设计的分层体系框架,使用的技术容易学习和操作,技术上可行。至于硬件这一方面,在科技快速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格也越来越低,一般的硬件设备都可以满足本系统的需要REF_Ref39529528\r\h[10]。2.3.3社会可行性高校的失物招领都是比较传统的,使用该系统并没有妨碍校园的管理,适合校园的管理制度,也符合学校的学生人员素质,软件的操作方式也很适合广大学生,而且还可以方便学生找回丢失的物品,给学生和学校都带来便利,还能发扬拾金不昧的美好品德和提高大学生的道德水平,建设美好和谐的校园文化,让校园充满正能量。所以社会上可行。第3章系统分析3.1功能分析3.1.1系统用例图图2系统用例图3.1.2用例规约(1)在失物招领系统上发布招领信息用例名称在失物招领系统上发布招领信息主参与者注册用户层次风筝层利益相关者注册用户前置条件用户登录访问系统,用户有发布招领信息的权限最低保证回滚未完成的事务成功保证用户成功发布招领信息触发器用户进入发布招领界面,填写资料,点击提交按钮主要的成功情节:用户成功发布招领信息,系统将新数据储存到数据库。用户浏览浏览目录用户登录系统扩展:a用户没有发布招领信息的权限1.a.1提示用户没有该权限1.a.2跳转到上一个操作页面b数据保存失败1.b.1回滚次用例操作,回到上一个操作页面1.b.2提醒用户数据保存失败,请重试1.c保存时必要字段未填写1.c.1保存失败,提示用户某字段不能为空(2)登录系统用例名称登录主参与者注册用户、管理员层次海平面利益相关者注册用户、管理员前置条件用户访问失物招领系统最低保证回滚未完成的事务成功保证用户成功登录系统触发器用户点击登录按钮主要的成功情节:1.用户成功登录系统。扩展:a系统数据库中不存在该用户的账号或密码1.a.1提示用户名或密码不能为空,或者提示用户名或密码错误1.b用户输入的用户名或密码为空1.b.1提示用户名或密码不能为空(3)发布招领信息用例名称发布招领信息主参与者注册用户层次海平面利益相关者注册用户前置条件用户登录系统,用户有发布招领信息的权限最低保证回滚未完成的事务成功保证用户成功发布招领信息触发器用户进入发布招领界面,填写资料,点击提交按钮主要的成功情节:1.用户成功发布招领信息,系统将新数据储存到数据库。扩展:a用户没有发布招领信息的权限1.a.1提示用户没有该权限1.a.2跳转到上一个操作页面b数据保存失败1.b.1回滚次用例操作,回到上一个操作页面1.b.2提醒用户数据保存失败,请重试1.c保存时必要字段未填写1.c.1保存失败,提示用户某字段不能为空(4)发布寻物信息用例名称发布寻物信息主参与者注册用户层次海平面利益相关者注册用户前置条件用户登录系统,用户有发布寻物招领信息的权限最低保证回滚未完成的事务成功保证用户成功发布寻物信息触发器用户进入发布寻物界面,填写资料,点击提交按钮主要的成功情节:1.用户成功发布寻物信息,系统将新数据储存到数据库。扩展:a用户没有发布寻物信息的权限1.a.1提示用户没有该权限1.a.2跳转到上一个操作页面b数据保存失败1.b.1回滚次用例操作,回到上一个操作页面1.b.2提醒用户数据保存失败,请重试1.c保存时必要字段未填写1.c.1保存失败,提示用户某字段不能为空(5)注册用例名称:注册主参与者:游客层次:海平面利益相关者:游客前置条件:进入注册页面最低保证:回滚未完成的事务成功保证:成功重新跳转到登录页面触发器:在登录页面点击下方链接,进入到注册页面主要的成功情节:登录页面点击下方链接,进入到注册页面。输入注册所需要的基本信息后,点击注册。成功跳转回到登录页面。输入已注册的账号密码登陆。能够成功跳转到相应主页,未跳转到失败页面。扩展:1.a用户所注册的账号为数据库中已有账号。1.a.1跳转到错误页面,提示用户该用户名已被注册。(6)发布感谢信用例名称发布感谢信主参与者注册用户层次海平面利益相关者注册用户前置条件用户登录系统,用户有发布感谢信的权限最低保证回滚未完成的事务成功保证用户成功发布招领信息触发器用户进入发布感谢信界面,填写资料,点击提交按钮主要的成功情节:1.用户成功发布感谢信,系统将新数据储存到数据库。扩展:a用户没有发布感谢信的权限1.a.1提示用户没有该权限1.a.2跳转到上一个操作页面b数据保存失败1.b.1回滚次用例操作,回到上一个操作页面1.b.2提醒用户数据保存失败,请重试1.c保存时必要字段未填写1.c.1保存失败,提示用户某字段不能为空(7)发布公告用例名称:发布公告主参与者:管理员层次:海平面利益相关者:个人用户、管理员前置条件:成功登陆管理员端最低保证:回滚未完成的事务成功保证:成功发布公告触发器:在管理员端填写公告基本信息,点击发布按钮主要的成功情节:管理员登录管理员端。点击发布公告在文本输入框输入公告基本信息。点击发布按钮。成功跳转回主页,前端用户页能够成功展示出所发公告。扩展:1.a所发公告名字/内容字数超出要求1.a.1跳转到错误页面,提示管理员发布的公告名字/内容字数超出限制。2.a输入公告内容时刷新页面2.a.1记录被清除,需管理员重新输入。(8)修改用户信息用例名称修改用户基本信息主参与者管理员层次海平面利益相关者管理员前置条件管理员进入修改用户信息页面最低保证回滚未完成的事务成功保证管理员成功修改用户信息触发器管理员编辑用户信息,点击确认修改按钮主要的成功情节:1.管理员成功修改用户基本信息,系统将新数据储存到数据库。扩展:1.a数据保存失败1.a.1回滚次用例操作,回到上一个操作页面1.a.2提醒用户数据保存失败,请重试1.b保存时必要字段未填写1.b.1提示用户某字段不能为空(9)修改物品信息用例名称修改物品基本信息主参与者管理员层次海平面利益相关者管理员前置条件管理员进入修改物品信息页面最低保证回滚未完成的事务成功保证管理员成功修改物品信息触发器管理员编辑无品牌信息,点击确认修改按钮主要的成功情节:1.管理员成功修改物品基本信息,系统将新数据储存到数据库。扩展:1.a数据保存失败1.a.1回滚次用例操作,回到上一个操作页面1.a.2提醒用户数据保存失败,请重试1.b保存时必要字段未填写1.b.1提示用户某字段不能为空3.2概念数据建模和对象关系建模3.2.1系统类图图3失物招领系统类图3.2.2对象关系模型User(User_id、UserName、Password、Grade、Name、TelPhone、Email、QQ、State、CreateTime、LastLoginTime、isAdmin)Pickthing(Pickthings_id、User_id、ThingsName、PickPlace、PickTime、ThingsType、ThingsNo、ThingsImg、ThingsDes、StoragePlace、TelPhone、PublishTime、Status)Lostthings(Pickthings_id、User_id、ThingsName、PickPlace、PickTime、ThingsType、ThingsNo、ThingsImg、ThingsDes、StoragePlace、TelPhone、PublishTime、Status)Notice(Notice_id、User_id、title、Substance、Status、PublishTime)Expressthanks(Expressthanks_id、User_id、Title、Substance、Status、LeaveTime)3.3动态建模3.3.1顺序图(1)用户登录顺序图图3.1用户登录顺序图(2)发布寻物信息顺序图图3.2发布寻物信息顺序图(3)发布招领信息顺序图图3.3发布招领信息顺序图3.3.2通信图(1)用户登录通信图图3.4用户登录通信图(2)发布寻物信息通信图图3.5发布寻物信息通信图(3)发布招领信息通信图图3.6发布招领信息通信图3.3.3系统分析类图失物招领系统分析类图,如下:图3.7系统分析类图3.3.4活动图用户发布招领信息活动图,如下:图3.8用户发布招领信息活动图3.3.4状态图PickThings对象在系统中的状态图,如下图3.9PickThings对象的状态图第4章系统设计4.1总体设计高校失物招领系统总体流程图,如下REF_Ref39616274\h图4总流程图所示图4总流程图4.2数据库设计本系统采用关系型数据库模式。使用了如下数据表:(1)用户表(user)(2)招领表(pickthings)(3)寻物表(lostthings)(4)感谢留言表(expressthanks)(5)公告表(notice)各表数据结构如下:表SEQ表\*ARABIC1用户表(user),存储用户信息字段名称数据类型主键是否空说明User_idbigint(20)YN用户IDUserNamevarchar(20)NN用户名Passwordvarchar(50)NN密码Gradevarchar(10)NN年级Namevarchar(20)NY姓名TelPhonevarchar(12)NN联系电话Emailvarchar(30)NY邮箱QQvarchar(15)NYqqStateint(11)NN状态CreateTimedateNN创建时间LastLoginTimedatetimeNY最后一次登录时间isAdminintNN是否管理员表SEQ表\*ARABIC2招领表(pickthings),存储招领信息字段名称数据类型主键是否空说明Pickthings_idbigint(11)YN招领IDThingsNamevarchar(30)NN物品名称PickPlacevarchar(30)NN捡到地点PickTimedateNN捡到时间ThingsTypevarchar(15)NN物品类型ThingsNovarchar(10)NY物品编号ThingsImgtextNY物品图片ThingsDestextNN物品描述StoragePlacetextNN暂存地点TelPhonevarchar(30)NY联系电话PublishTimedatetimeNY发布时间Statusint(11)NN状态UserNamevarchar(20)NN用户名表SEQ表\*ARABIC3寻物表(lostthings),存储寻物信息字段名称数据类型主键是否空说明Lostthings_idbigint(11)YN寻物IDThingsNamevarchar(30)NN物品名称LostPlacevarchar(30)NN丢失地点LostTimedateNN丢失时间ThingsTypevarchar(15)NN物品类型ThingsNovarchar(10)NY物品编号ThingsImgtextNY物品图片ThingsDestextNN物品描述PublishTimedatetimeNY发布时间Statusint(11)NN状态UserNamevarchar(20)NN用户名表SEQ表\*ARABIC4感谢留言表(expressthanks),存储感谢留言信息字段名称数据类型主键是否空说明Expressthanks_idbigint(20)YN感谢留言IDTitlevarchar(30)NN感谢标题SubstancetextNN感谢内容Statusint(11)NN状态UserNamevarchar(20)NN感谢人LeaveTimedatetimeNN感谢时间表SEQ表\*ARABIC5公告表(notice),存储系统公告信息字段名称数据类型主键是否空说明Notice_idint(11)YN公告IDtitlevarchar(50NY标题SubstancelongtextNN公告内容Statusint(11)NN状态PublishTimedatetimeNY发布时间4.3UI设计图SEQ图\*ARABIC3.1系统首页图SEQ图\*ARABIC4.2用户注册图SEQ图\*ARABIC5.3用户登录图SEQ图\*ARABIC6.4发布招领信息图SEQ图\*ARABIC7.5发布寻物信息图SEQ图\*ARABIC8.6系统后台第5章系统实现5.1关键代码分析本系统使用springMVC,sping-mvc.xml是配置springMVC的,而springMVC是整个系统最重要的一部分。它主要是用来配置action的,也就是请求处理之类的。 sping-mvc.xml<!--开启Controller注解支持--> <context:component-scanbase-package="com.lin.**.controller"> <context:include-filtertype="annotation"expression="org.springframework.stereotype.Controller"/> </context:component-scan> <mvc:annotation-driven/> <mvc:default-servlet-handler/> <!--静态资源映射配置--> <mvc:resourceslocation="/WEB-INF/static/"mapping="/static/**"/> <!--配置视图解析器:如何把handler方法返回值解析为实际的物理视图--> <beanid="defaultViewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/> <propertyname="contentType"value="text/html"/> <propertyname="prefix"value="/WEB-INF/views/"></property> <propertyname="suffix"value=".jsp"></property> </bean> <!--文件上传--> <beanid="multipartResolver"class="mons.CommonsMultipartResolver"> <!--默认编码--> <propertyname="defaultEncoding"value="UTF-8"/> </bean> <!--拦截器配置--> <mvc:interceptors> <!--当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法--> <!--前台拦截器--> <mvc:interceptor> <!--匹配的是url路径,如果不配置或/**,将拦截所有的Controller--> <mvc:mappingpath="/find/**"/> <mvc:mappingpath="/lost/**"/> <mvc:mappingpath="/user/**"/> <mvc:mappingpath="/message/**"/> <mvc:exclude-mappingpath="/find/find-list.do/**"/> <mvc:exclude-mappingpath="/find/find-list.html/**"/> <mvc:exclude-mappingpath="/find/find-details.do/**"/> <mvc:exclude-mappingpath="/find/find-details.html/**"/> <mvc:exclude-mappingpath="/lost/lost-list.do/**"/> <mvc:exclude-mappingpath="/lost/lost-list.html/**"/> <mvc:exclude-mappingpath="/lost/lost-details.do/**"/> <mvc:exclude-mappingpath="/lost/lost-details.html/**"/> <mvc:exclude-mappingpath="/static/**"/> <beanclass="erceptor.UserInterceptor"/> </mvc:interceptor> <!--配置Token拦截器,防止用户重复提交数据--><mvc:interceptor><mvc:mappingpath="/find/**"/> <mvc:mappingpath="/lost/**"/><beanclass="erceptor.TokenInterceptor"/></mvc:interceptor> <!--后台拦截器--> <mvc:interceptor> <!--匹配的是url路径,如果不配置或/**,将拦截所有的Controller--> <mvc:mappingpath="/admin/**"/> <mvc:exclude-mappingpath="/admin/login"/> <mvc:exclude-mappingpath="/admin/login.do"/> <mvc:exclude-mappingpath="/admin/login.html"/> <beanclass="erceptor.AdminInterceptor"/> </mvc:interceptor> </mvc:interceptors> <!--在调用Controller的时候AOP发挥作用所以在此配置文件里加上以下配置信息--> <!--启动对@AspectJ注解的支持--> <aop:aspectj-autoproxy/> <!--通知spring使用cglib而不是jdk的来生成代理方法AOP可以拦截到Controller--> <aop:aspectj-autoproxyproxy-target-class="true"/></beans>配置Spring的spring-config.xml如下。<!--扫描注解Bean4個註解--> <context:component-scanbase-package="com.lin.**.impl,com.lin.*.websocket,com.lin.*.aspect"> <context:exclude-filtertype="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--导入资源文件--> <context:property-placeholderlocation="classpath:resource/perties"/> <!--配置数据源1--> <beanid="dataSource1"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"> <propertyname="user"value="${user}"></property> <propertyname="password"value="${password}"></property> <propertyname="driverClass"value="${driver}"></property> <propertyname="jdbcUrl"value="${url}"></property> <propertyname="initialPoolSize"value="${initPoolSize}"></property> <propertyname="maxPoolSize"value="${maxPoolSize}"></property> <propertyname="maxIdleTime"value="${maxIdleTime}"></property> </bean> <!--配置数据源2--> <beanid="dataSource2"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"> <propertyname="user"value="${ds2.user}"></property> <propertyname="password"value="${ds2.password}"></property> <propertyname="driverClass"value="${ds2.driver}"></property> <propertyname="jdbcUrl"value="${ds2.url}"></property> <propertyname="initialPoolSize"value="${ds2.initPoolSize}"></property> <propertyname="maxPoolSize"value="${ds2.maxPoolSize}"></property> <propertyname="maxIdleTime"value="${ds2.maxIdleTime}"></property> </bean> <!--编写spring配置文件的配置多数源映射关系(dataSource)--> <beanid="dataSource"class="com.lin.lostandfound.datasource.DynamicDataSource"> <propertyname="targetDataSources"> <mapkey-type="java.lang.String"> <entryvalue-ref="dataSource1"key="dataSource1"></entry> <entryvalue-ref="dataSource2"key="dataSource2"></entry> </map> </property> <propertyname="defaultTargetDataSource"ref="dataSource1"></property> </bean> <!--数据源aopbean--> <beanid="dataSourceExchange"class="com.lin.lostandfound.aspect.DataSourceAspect"></bean> <!--hibernate--> <beanid="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <propertyname="dataSource"ref="dataSource"/> <!--扫描Hibernate的包--> <propertyname="packagesToScan"value="classpath:com.**.domain"/> <!--配置hibernate映射文件的位置及名称,可以使用通配符--> <propertyname="mappingLocations"value="classpath:com/lin/lostandfound/domain/*.hbm.xml"></property> <propertyname="hibernateProperties"> <props> <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <propkey="hibernate.show_sql">true</prop> <propkey="hibernate.format_sql">true</prop> <propkey="hibernate.hbm2ddl.auto">update</prop> <propkey="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop> </props> </property> </bean> <!--事务管理--> <beanid="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <!--事务注解--> <tx:annotation-driventransaction-manager="transactionManager"/> <!--Spring声明式事务--> <tx:advicetransaction-manager="transactionManager"id="txAdvice"><tx:attributes><tx:methodname="get*"read-only="true"/><tx:methodname="find*"read-only="true"/><tx:methodname="count*"read-only="true"/><tx:methodname="*"/></tx:attributes> </tx:advice> <aop:config> <aop:pointcutid="transactionPointCut"expression="execution(*com.lin.lostandfound.service.impl.*.*(..))"/> <aop:advisorpointcut-ref="transactionPointCut" advice-ref="txAdvice"order="2"/> <aop:advisoradvice-ref="dataSourceExchange"pointcut-ref="transactionPointCut"order="1"/> </aop:config> <!--<aop:config> <aop:pointcutexpression="execution(*xx.xx.service.impl.*.*(..))"id="txPointCut"/> <aop:advisoradvice-ref="txAdvice"pointcut-ref="txPointCut"/> </aop:config>--></beans>下面对招领业务代码进行分析,首先PickThings实体进行分析,PickThings.java代码如下:packagecom.lin.lostandfound.model;//Generated2017-4-2010:53:03byHibernateTools4.0.0importjava.util.Date;/***Pickthingsgeneratedbyhbm2java*/publicclassPickthingsimplementsjava.io.Serializable{ privateLongid; privateStringthingsName; privateStringpickPlace; privateDatepickTime; privateStringthingsType; privateStringthingsNo; privateStringthingsImg; privateStringthingsDes; privateStringstoragePlace; privateStringtelPhone; privateDatepublishTime; privateintstatus; privateStringuserName; privatelonguid; publicPickthings(){ } publicPickthings(StringthingsName,StringpickPlace,DatepickTime, StringthingsType,StringthingsDes,intstatus,StringuserName, longuid){ this.thingsName=thingsName; this.pickPlace=pickPlace; this.pickTime=pickTime; this.thingsType=thingsType; this.thingsDes=thingsDes; this.status=status; this.userName=userName; this.uid=uid; } publicPickthings(StringthingsName,StringpickPlace,DatepickTime, StringthingsType,StringthingsNo,StringthingsImg, StringthingsDes,StringstoragePlace,StringtelPhone, DatepublishTime,intstatus,StringuserName,longuid){ this.thingsName=thingsName; this.pickPlace=pickPlace; this.pickTime=pickTime; this.thingsType=thingsType; this.thingsNo=thingsNo; this.thingsImg=thingsImg; this.thingsDes=thingsDes; this.storagePlace=storagePlace; this.telPhone=telPhone; this.publishTime=publishTime; this.status=status; this.userName=userName; this.uid=uid; } publicLonggetId(){ returnthis.id; } publicvoidsetId(Longid){ this.id=id; } publicStringgetThingsName(){ returnthis.thingsName; } publicvoidsetThingsName(StringthingsName){ this.thingsName=thingsName; } publicStringgetPickPlace(){ returnthis.pickPlace; } publicvoidsetPickPlace(StringpickPlace){ this.pickPlace=pickPlace; } publicDategetPickTime(){ returnthis.pickTime; } publicvoidsetPickTime(DatepickTime){ this.pickTime=pickTime; } publicStringgetThingsType(){ returnthis.thingsType; } publicvoidsetThingsType(StringthingsType){ this.thingsType=thingsType; } publicStringgetThingsNo(){ returnthis.thingsNo; } publicvoidsetThingsNo(StringthingsNo){ this.thingsNo=thingsNo; } publicStringgetThingsImg(){ returnthis.thingsImg; } publicvoidsetThingsImg(StringthingsImg){ this.thingsImg=thingsImg; } publicStringgetThingsDes(){ returnthis.thingsDes; } publicvoidsetThingsDes(StringthingsDes){ this.thingsDes=thingsDes; } publicStringgetStoragePlace(){ returnthis.storagePlace; } publicvoidsetStoragePlace(StringstoragePlace){ this.storagePlace=storagePlace; } publicStringgetTelPhone(){ returnthis.telPhone; } publicvoidsetTelPhone(StringtelPhone){ this.telPhone=telPhone; } publicDategetPublishTime(){ returnthis.publishTime; } publicvoidsetPublishTime(DatepublishTime){ this.publishTime=publishTime; } publicintgetStatus(){ returnthis.status; } publicvoidsetStatus(intstatus){ this.status=status; } publicStringgetUserName(){ returnthis.userName; } publicvoidsetUserName(StringuserName){ this.userName=userName; } publiclonggetUid(){ returnthis.uid; } publicvoidsetUid(longuid){ this.uid=uid; }}对Dao层进行分析,IPickThingsDao接口制定具体规范,然后PickThingsDaoImpl实现IPickThingsDao接口完成具体的业务实现与数据库进行交互。IPickThingsDaoImpl代码如下:packagecom.lin.lostandfound.service;importjava.util.Map;importcom.lin.lostandfound.domain.PickThings;publicinterfaceIPickThingsService{ //添加 publicbooleanadd(PickThingspickThings); //批量修改状态 publicbooleanmodifyStatus(StringpickId,intstatus); //修改状态 publicbooleanmodifyStatus(longpickId,intstatus); //删除 publicbooleanremove(StringpickId); //查询所有统计数量 publiclongqueryAllCount(Stringkey); //查询所有 publicMap<String,Object>queryAll(Stringkey,IntegerpageIndex, IntegerpageSize,StringsortField,StringsortOrder); //查询所有(分页) publicList<PickThings>queryAll(IntegercurrentPage,IntegerpageSize, booleandesc); //根据id查询 publicPickThingsqueryById(longid); //根据用户id查询所有 publicList<PickThings>queryAllByUid(longuid); //根据类型查询数量 publiclongqueryByType(Stringtype); //根据用户id查询统计所有(分页) publiclongqueryAllByUidCount(longuid); //根据用户id查询所有(分页) publicList<PickThings>queryAllByUid(longuid,IntegercurrentPage, IntegerpageSize,booleandesc); //根据关键字查询所有 publicList<PickThings>queryAllByKeywords(Stringkeywords); //根据关键字查询统计数量(分页) publiclongqueryAllByKeywordsCount(Stringkeywords); //根据关键字查询所有(分页) publicList<PickThings>queryAllByKeywords(Stringkeywords, IntegercurrentPage,IntegerpageSize,booleandesc); //根据类型查询所有(分页) publicList<PickThings>queryAllByThingsType(Stringtype, IntegercurrentPage,IntegerpageSize,booleandesc); //查询已归还 publiclongqueryByReturnedCount(); //查询已成功贴的信息 publicList<PickThings>queryThingsBySuccess(intindex); //查询一条记录(上一条、下一条) publicPickThingsqueryOneRecord(longid,booleanisNext);}总结失物招领系统的灵感来源是自己和身边的同学经常出现丢失物品的现象。并且学校的失物招领工作并不够完善,因此我就构思,能不能有一个完整的失物招领系统来解决学校全体师生丢失物品这个问题的失物招领系统。本系统的设计与开发是基于JSP+Spring+SpringMVC+Hibernate+MySql的高校失物招领系统,这是关乎业务管理和软件技术的工作,只有自己在理解系统业务的基础数,才能够对业务的流程进行优化处理,还要通过软件的设计和开发技术进行实现。本系统的设计界面简洁友好、功能较丰富、操作容易,可以适应高校失物管理所需要的工作。通过设计与开发高校失物招领系统,本人又进一步全面的掌握了Java的基本知识和编程技巧,而且在开发的过程中我的开发能力也得到了进一步的提高。比如:更进一步的了解软件三层框架、MVC设计模式,还有SQL语言的使用等等。在开发的过程中我也学到了许多的经验,系统开发前期的分析的好不好将会决定系统开发的顺利与否,只有系统分析得好,这样系统的开发才能够顺利的进行下去。因此我们先不要动手编程,应该要做好充足的系统分析,做好数据库设计等工作,然后才能动手编写程序,这样才能做到有条不紊,每一步开发都有所依据。我觉得在这次的设计过程中自己走了很多弯路,主要是自己本身就缺乏软件开发的经验,在技术方面用了很多的时间来重新学习和巩固,也看到自己还有很多经验不足的地方,以后还需要更多的努力。谢辞本文是我在李玉敏老师的悉心指导下完成的,从论文的选题、课题的研究到论文的撰写上李老师给了我莫大的帮助。当我遇到问题时,李老师会认真仔细地给我解释说明;当我碰到困难时,他会帮助我一起解决。在此向李老师表示深深的敬意和衷心的感谢。感谢我的父母,因为他们的在精神和物质上的支持才能使我顺利完成大学四年的学习,我将在我未来的工作岗位上努力工作来回报他们的养育之恩。同时,非常感谢学校、学院各位老师和领导对我各方面的关心与支持。感谢在百忙之中参加论文评审和答辩的各位老师。参考文献朱运乔.基于Spring+SpringMVC+hibernate框架的Web系统设计与实现[J].电脑知识与技术,2018,14(26):72-74.赵栖栖.基于Android开发的高校失物招领平台[J].数字化用户,2018,024(010):37.翟阳阳,潘清,刘文艳,等.基于医学院校计算机实验室管理平台的失物招领系统研发[J].中国医学装备,2018,v.15;No.166(06):140-143.高越.高校失物招领系统的设计与实现[D].韩雨佟.基于B/S物联网环境监测系统MySQL数据库的设计与实现[D].天津大学.吴江平.ResearchandAnalysisofCampusLostandFoundManagementSystem%高校失物招领管理系统的研究与分析[J].科技广场,2015,000(011):32-35.卓圣洁.无需失主与拾物者联系的自助校园失物招领方法和系统:.邹骅.基于微信公众平台的校园失物招领系统设计[J].河北软件职业技术学院学报,2017(3).乔淑夷.基于MVC模式的Web前端框架关键技术研究与实现[D].从树.服务器硬件选型测试平台的设计与实现[D].2017.附录附录1程序源代码(1)发布寻物信息(2)发布招领信息(3)保存感谢留言

HYPERLINK如何选择组装电脑配件

如何选择组装的电脑配件.

第一,选择好CPU平台,就是INTER还是AMD,看你是要配什么样的电脑,高端还是低端的,两个平台都高低的产品。第二,选择主板了,主板的品牌比较多,质量,价格也不一,当你第一步却定了,那么主板也就相应的却定下来了,以INTER为例,只可以选择775接口的主板(早期有478接口的,不推荐),主板的选择主要有两种,一是集成显卡,二是不集成显卡。集成显卡的话,就可以省下显卡的钱,但是对游戏玩家不推荐。那么当然是选择不集成显卡的主板了,而且最好选择一线品牌,如华硕,技嘉等。主板里,还有个蕊片组的选择。关于蕊片组,各个品牌的主板命名有些不一样,主流是INTER965,945,915,VIA的KT890,还有NFORCE4,NFORCE5。等。比较难说清楚。最好是选择INTER的蕊片组,虽然价格会稍高一些。推荐945,技术比较成熟。第三,显卡的选择。显卡主要还是有两类品牌,GEFORCE和ATI,两个品牌有高,中,低的显卡。显卡选择要看你个人喜欢了,预算充足的话,最好是买中,高端的显卡。

第四,就是内存了,内存关系电脑的稳定性。当然是要好一点的。买一线品牌的。现在配电脑,主流是DDR667,DDR800DDR1333第五,显示器的选择,推荐液晶。如何选择硬件组装电脑这是一个老生常谈的问题了,这也是一个让高手们显示自己硬件功底的问题,同时这还是一个让很多新手为之焦头烂额的问题。该怎么配?具体配什么?怎样配才能尽量减小瓶颈?本文就将从内到外,从理论到实践,为朋友们抽丝剥茧一一道来。

一、CPU

作为一台电脑最关键的组成部分,CPU确实起着举足轻重的作用,但体现一台电脑的综合速度,并不是仅仅依靠CPU的,常常看到很多新手们在配电脑的时候,把CPU选的很好,但其他的东西诸如内存、主板、硬盘等都选的不太理想,好像这台电脑速度的快慢就体现在CPU速度的快慢上似的。甚至很多著名的品牌机厂商,都推出过类似“P4+256M内存”的这种跛脚配置。其实对于一般的家用电脑而言,一个真正会配的高手,是不会把大量的钱花在CPU上的。家用电脑,毕竟不是做密集型科学计算用的,它讲求的是多种媒体的配合工作,讲求的是能一边下载文件、一边上网浏览网页、一边听音乐、一边还能打开其他的程序,在这种情况下,提升内存的容量比提升CPU的主频对速度的影响要明显的多。现今的中国家庭用户,很多家长对于电脑一窍不通,他们只听说“奔四”代表着速度快,并不知道整机速度的快慢除了CPU以外,还有很多其他的因素影响着它。但在买电脑的时候,最后做决定并掏钱的人,往往都是这些啥都不懂的家长们,于是就出现了上面的一幕:品牌机厂商为了能有更好的销路、兼容机装机店的销售人员为了能拿到更多的奖金,开始违背良心来配置出这种高主频处理器、低容量内存的跛脚电脑。说严重点,这是属于对消费者的不负责任,是一种商业欺诈行为!同样5000元的配置,高手配出来的赛扬,比新手配出来的P4还要快很多,曾经有一家全球著名的硬件网站在2003年的时候刊登过一篇关于配置家用电脑时各硬件占用总预算百分比的文章,文中很明确的提到了CPU的价钱最好不要超过总预算的10%-15%,我们虽然不能说他肯定完全正确,但至少人家是通过很多调查后得出的结论,有借鉴的理由。反观现在的很多所谓的“低价奔四电脑”、“3999元买P4品牌机”之类的广告,我想说的就是:你花了3999元,只买了一块P4的处理器,其他的什么都没有了!

二、内存

对于配置一台电脑来说,内存是重头戏,容量、速度、类型等等每一项指标都对最终的整机综合速度起着至关重要的影响,尤其是内存的带宽和容量。对于内存带宽而言,很多人都认为400MHz、533MHz前端总线的赛扬四或P4,配单通道的DDR内存就足够了,双通道DDR内存是配合800MHz以上前端总线的P4处理器用的,其实这样就大错特错了,哪怕是最老的赛扬四,都需要双通道的DDR内存才能达到它的带宽!也就是说,你如果选择赛扬四1.8G,必须配合865以上的主板和至少双通道DDR200的内存,才能满足它的带宽要求!稍微计算一下就可以得知:赛扬四1.8G的前端总线是400MHz,它的内存带宽理论值是400MHz×64bit÷8=3.2G/s,但当它装在845系列的主板上时,由于845主板的限制,即使你插上能符合它带宽要求的DDR400内存,也只能运行在DDR266上,这时的内存所能提供的带宽是266MHz×64bit÷8=2.1G/s,比3.2G/s要小很多,即使你通过BIOS里的内存调节选项往上调节一档(也只能调节一档而已),让内存运行在DDR333下,所能提供的带宽也仅仅是333MHz×64bit÷8=2.66G/s,离3.2G/s还是有一定的距离,而内存带宽的降低,能非常明显的降低整机的综合速度,运行任何程序都能明显的感觉出来!所以如果想满足赛扬1.8G处理器的内存带宽要求,你必须要为它配置865以上的主板和双通道的内存才行!P4亦是如此。很多人也许会问:那845系列的主板是配什么处理器的呢?我想回答你的就是:845系列的主板是属于“不能用”的主板,因为处理器永远比主板发展的快,当初Intel造出845系列的芯片组是为了能给当时的赛扬和P4提供一个过渡的平台,不至于让它们成为“没有主板配合”的处理器而已,也是为了能在低端市场分一杯羹,而现今865甚至9xx系列的主板横行的时候,845系列的主板确实是属于“不能用”的主板了,满足不了任何一款处理器的内存带宽,造成性能上的严重低下,试问这种主板你会选择么?即使配台2000多元的超低价电脑,也不要去选择845系列的主板,至少需要865以上的和双通道内存才行,因为内存带宽是一个非常影响系统性能的参数,倘若一味的为了省钱而配置845系列的主板,那就得不偿失了。

内存的容量方面,应每个人对电脑的使用方向不同,容量的要求也是不同的,现在配置的家用电脑,笔者建议:如果不打游戏,或者是打打扫雷、纸牌之类的游戏,平时注重于上网浏览或者是聊天、看电影之类的应用的话,内存容量不应该低于1G;如果是偶尔打打单机游戏或者是网络游戏,内存容量应该选择在2G左右,如果是经常打大型的游戏或是进行HDTV视频编辑等应用,那么4G的内存是必不可少的。

三、主板

一台电脑的稳定性和兼容性,

温馨提示

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

评论

0/150

提交评论