




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/XX技术师范学院毕业设计说明书〔论文****智能公交管理系统摘要:****智能公交管理系统可以辅助****公交车公司车辆、公交线路和司机进行管理,用户对车次进行查询,用户为公交公司留言。本文首先介绍了系统开发的背景和意义以及系统的解决方案;然后介绍了主要的设计方法和现在最流行的MVC开发模式及系统开发中所用到软件,系统的需求分析和数据库设计;最后对各功能模块详细设计、界面设计与代码实现进行了说明。****智能公交管理系统由车次查询、车次更新、会员中心、留言板、管理员等模块组成。系统采用了流行的MVC三层架构,分为表示层、功能层和数据层,这既提高了系统的安全性与可靠性,又使系统具有较好的扩展性。在系统的具体实现中,采用了JavaEE体系中比较成熟的JSP+Struts+JDBC架构进行设计,以MyEclipse6.5作为开发平台,采用JSP设计用户界面,以SQLServer2005作为后台数据库。关键词:智能公交管理系统;SQLServer;JSPIntelligentPublicTransportManagementSystemAbstract:Intelligentpublictransportmanagementsystemof******canassist******Buscompanycar,busroutesanddriverstomanage,trainuserstoquerytheuserforthebuscompanyamessage.Thispaperdescribesthebackgroundandsignifycanceofsystemdevelopmentandsystemsolutions;thendescribesthemaindesignmethodsandisnowthemostpopularMVCdevelopmentmodelandareusedinsoftwaresystemdevelopment,systemrequirementsanalysisanddatabasedesign;Finally,thefunctionmoduledetaileddesign,interfacedesignandimplementationofthecodearedescribed.Intelligentpublictransportmanagementsystemof******bythetrainnumber,trainupdates,membercenter,messageboards,administratorsandothermodules.SystemusesthepopularMVCthree-tierstructureisdividedintopresentationlayer,functionallayerandthedatalayer,whichnotonlyimprovessystemsecurityandreliability,andthesystemhasgoodscalability.Concreterealizationofthesystem,usingaJavaEEsystemmorematureJSP+Struts+JDBCarchitecturedesignedtoMyEclipse6.5asadevelopmentplatform,userinterfacedesignusingJSPtoSQLServer2005astheback-enddatabase.Keywords:IntelligentPublicTransportManagementSystem;SQLServer;JSP目录前言1第1章关键技术简介31.1B/S结构31.2JavaEE41.3SQLServer51.4Struts261.5MVC模式61.6MyEclipse71.7Tomcat81.8MicrosoftOfficeVisio8第2章系统分析92.1功能需求92.2性能需求10第3章系统设计123.1系统模块设计123.2实体类设计143.3数据库设计15数据库表15第4章系统实现194.1开发环境配置19数据表创建194.1.2数据源的配置194.1.3Struts2的配置204.2首页214.3车次查询模块21车次查询页面214.4车次更新模块23车次更新页面234.5留言板模块24留言板主页面244.6会员中心模块254.6.1会员注册页面254.6.2会员登录页面264.7管理员模块274.7.1会员登录274.7.2系统用户管理284.7.3公交信息管理294.7.3注册会员管理31第5章系统测试325.1测试线路查询32测试数据设计32测试过程325.2测试修改管理员密码33测试数据设计33测试过程335.3测试对公交信息进行管理34测试数据设计34测试过程345.4测试总结36结束语37参考文献38致谢40前言十二五期间,****市将发展六大智能产业,实施八大应用工程,最终实现社会管理信息化、居民生活智慧化、装备制造智能化、智能技术产业化当"智慧"与一个城市有了千丝万缕的联系,我们不妨先大胆展望下未来可能出现的情景:在单位用手机就可以远程遥控家里的电器;用手机上网就能查询公交车何时能够到达;在家动动鼠标就能选饭店、预先点好菜;不出家门能在电视上实现预约挂号、医疗急救等。当这一切不再只是梦想,再过几年,以及包括医疗、教育、交通、生态环境、政务、企业管理等领域的各种应用都将成为现实。"智慧城市"建设,是以城市建设运行系统的充分整合与业务高效协同为目标,充分运用感知技术、信息技术和通信技术手段,对获取的有一定标准规范的、城市发展建设中的海量数据信息进行智能处理和分析,对公众服务、社会管理、产业发展等活动的各种需求做出智能化响应和智能化决策支持,从而构建起城市发展的智能环境和全新城市形态。智慧城市的发展目标:实现社会管理信息化、居民生活智慧化、装备制造智能化、智能技术产业化。****智能公交管理系统就是基于这种现状下产生的,人们将足不出户,就可以了解到现在所要乘坐的公交车到达哪一站、从某一站如何转乘车到达另一站,而这些操作将不再需要亲自到站台,只需轻轻点击鼠标即可,这与"智慧****"息息相关。****智能公交管理系统可以优化公交乘客的乘车信息服务,改善公交公司管理和运营调度。智能公交管理便于为线路调整、规划等方面的决策提供基础数据信息。所谓智能公交管理系统,就是在公交网络分配、公交调度、预测算法等关键理论研究的前提下,利用系统工程的理论和方法,将现代通信、信息、电子、控制、计算机、网络等新技术集成应用于公共交通系统,通过构建现代的信息管理系统和控制调模式,实现公共交通调度、运营、管理的信息化、现代化和智能化,增强公交企业管理水平和服务水平,提高公交企业的运营效率和效益;同时为出行者提供更加安全、舒服、使捷的公共交通服务信息服务。从而吸引居民采用公交方式出行,缓解城市交通拥挤,有效解决城市交通问题,创造更大的社会和经济效益。作为智能交通系统研究的一项重要内容,****智能公交管理系统主要以出行者和公交企业为服务对象。对于出行者而言,智能公交管理系统通过采集与处理动态数据〔如:客流量、交通流量、公交车辆位置、公交站点候车状况等从而实现规划出行、最优路径选择、换乘路线、最佳出行时间的目的。对于公交企业而言,智能公交管理系统主要实现对公交车辆的动态监控、实时调度、科学和理等功能,并实现公交企业自身的现代化、信息化管理,从而提高公交服务水平和公交企业的经营效益。本系统由于硬件的需求有限,以提供对出行者的功能为主。关键技术简介****智能公交管理系统采用B/S结构进行设计,SQLServer作为后台数据库,采用Java和JSP作为开发语言,使用MyEclipse作为程序开发平台,开发过程运用Struts2,遵循MVC的三层架构。使用MicrosoftOfficeVisio应用软件,画出系统用例图、顺序图等。1.1B/S结构****智能公交管理系统采用B/S结构进行设计,整个系统分为3层:1.表示层:用户接口部分,担负着用户与系统间的对话功能。主要用于检查用户的键盘输入和运算结果的输出。现在都采用图形用户接口,便于用户直观操作。2.功能层:实现业务逻辑功能的算法和处理。处理表示层的输入或调用数据层返回数据结果。功能层主要包括业务功能和数据功能两部分。业务功能在功能层内部就可以解决,数据功能必须依靠与数据层的交互才可以完成。3.数据层:对数据库中数据的管理。三层架构的优点如下:1.提高程序的可维护性:三层架构层次分明,一旦运行出现问题,可以快速的判断是哪一层的问题,利于维护。2.可以合理快速的开发:因为三层之间除了调用没有其他关联,只需先把三层之间的接口定义好,则程序员可以并行开发,提高了开发速度。3.提高了系统安全性:每层都有安全设置,即使表示层被攻破,下一层的安全还有保障。4.提高了系统的扩展性:三层结构最大的好处是在扩展应用系统时,改动的部分不会影响大局,同时满足用户对新增功能的需求。1.2JavaEE****智能公交管理系统采用采用了JavaEE体系中比较成熟的JSP+Struts+JDBC架构。JavaEE将企业应用程序划分为多个不同的层,并在每一个层上定义对应的组件来实现它。典型的JavaEE结构的应用程序包括四层:客户层、表示逻辑层〔Web层、业务逻辑层和企业信息系统层。JavaEE客户层可以是网络浏览器也可以是桌面应用程序。表示逻辑层〔Web层、业务逻辑层都位于应用服务器上,它们都是由一些JavaEE标准组件JSP、Servlet、EJB等来实现,这些组件运行在实现了JavaEE标准的应用服务器上,以实现特定的表现逻辑和业务逻辑。企业信息系统层主要用于企业信息的存储管理,主要包括数据库系统、电子邮件系统、目录服务等。JavaEE应用程序组件经常需要访问企业信息系统层来获取所需的数据信息。JavaEE体系结构的实施可显著的提高企业应用系统的可移植性、安全性、可伸缩性、负载平衡和可重用性。JavaEE本身是一个为企业分布式应用的开发提供的标准。JavaEE作为一个企业分布式应用开发标准,主要体现在以下两个方面:JavaEE规范了分布式组件的开发标准。JavaEE包含的分布式组件有JSP、Servlet、EJB等。JavaEE标准规定了这些分布式组件应该实现哪些接口,应该提供哪些方法。JavaEE规范了分布式组件运行环境-容器所提供服务的标准。分布式组件的运行环境称为容器,容器通过标准的服务来支持分布式组件的运行。不同的分布式组件由不同的容器来支撑运行。如JSP-Servlet运行在Web容器中,EJB组件运行在EJB容器中。JavaEE规范中,容器实现的标准服务有JDBC、JMS等JavaEE为满足开发多层体系结构的企业级应用需求,提出"组件-容器"的编程思想。JavaEE应用的基本软件单位是JavaEE组件。所有的JavaEE组件都运行唉特定的运行环境中。作为一个企业分布式应用开发标准,JavaEE最终由一系列的企业应用开发技术来实现。JavaEE技术框架可以分为三部分:组件技术、服务技术和通信技术。JavaEE体系结构具有以下优点:1.独立于硬件和操作系统2.坚持面向对象的设计原则3.灵活性、可移植性和互操作性4.轻松的企业信息系统集成1.3SQLServerSQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。Microsoft公司推出了SQLServer2000,SQLServer2005,SQLServer2008,SQLServer2012以及企业版的数据库平台。MicrosoftSQLServer2005是一个全面的数据库平台,MicrosoftSQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使开发者可以构建和管理用于业务的高可用和高性能的数据应用程序。MicrosoftSQLServer2005优点:1.拥有了真正的表和索引数据分区技术。数据分区技术极大加强了表的可伸缩性和可管理性,使得SQLServer处理海量数据的能力有了质的飞跃2.可编程性。CLR集成,可以轻松利用开发语言的优势,如其面向对象的封装、继承和多态特性,编写出那些需要对数据进行复杂数值计算或逻辑的代码,如字符串处理,数据加密算法,XML数据操作等等。3.T-SQL语言增强4.安全。SQLServer2005每一层都使用证书、非对称密钥和对称密钥的组合对它下面的一层进行加密,提高了密钥安全性。5.快照隔离。解决系统出现的阻塞或死锁现象。6.全文搜索增强。全文检索引擎使用共享内存和SQLServer进行数据大规模并发交互,而不是原来基于逐行的方式。7.复制增强。采用对等复制在复制参与者之间建立某种程度的负载平衡。8.异步处理能力。它为数据库应用程序增加了可靠、可扩展、分布式异步功能异步编程,允许程序仅仅在资源可用时才去执行占用大量资源的任务。1.4Struts2Struts是Apache软件基金会〔ASF赞助的一个开源项目。它最初是Jakarta项目中的一个子项目Struts流程并在20XX3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。Struts2是Struts的升级与改进,是在Struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。当Web容器收到请求〔HttpServletRequest它将请求传递给一个标准的的过滤链包括〔ActionContextCleanUp过滤器,然后经过Otherfilters<SiteMesh,etc>,接下来需要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求那个Action,ActionMapper返回一个收集Action详细信息的ActionMaping对象。接下来FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器<ConfigurationManager>从配置文件中读取配置信息<Struts.xml>,然后创建ActionInvocation对象,ActionInvocation在调用Action之前会依次的调用所用配置拦截器〔InterceptorN一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的<Result然后执行这个Result,Result会调用一些模版〔JSP来呈现页面,之后拦截器<InterceptorN>会在被执行<顺序和Action执行之前相反>最后响应<HttpServletResponse>被返回在web.xml中配置的那些过滤器和〔核心控制器〔FilterDispatcher1.5MVC模式MVC是Model〔模型、View〔视图和Controller〔控制的缩写。MVC模式的目的就是实现Web系统的职能分工。Model层实现系统中的业务逻辑,通常可以用JavaBean来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。在MVC模式中,三个层各司其职。所以一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码即可,而不会影响到其它层中的代码,这样有利于开发中的分工。在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。有利于组件的重用,分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。1.6MyEclipseMyEclipse企业级工作平台〔MyEclipseEnterpriseWorkbench,简称MyEclipse是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。MyEclipse是一个十分优秀的用于开发Java,JavaEE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属Eclipse开发工具。对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错。1.7TomcatTomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总能在Tomcat中得到体现。在Tomcat中,应用程序的部署很简单,用户只需将WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。在浏览器中访问JSP时,通常第一次会很慢,因为Tomcat要将JSP转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于FTP〔即FileTransferProtocol,可以在远程通过Web部署和撤销应用〔本地也可以。1.8MicrosoftOfficeVisioOfficeVisio2010便于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。使用具有专业外观的OfficeVisio2010图表,可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策。MicrosoftOfficeVisio可以创建具有专业外观的图表,以便理解、记录和分析信息、数据、系统和过程。系统分析系统分析作用是:帮助人们理解政策系统及对不同的政策系统加以比较;鼓励人们对系统的不同部分进行同时的研究;使人们注意系统中的结构和层次的特点;开拓新的研究领域,增加新的知识;突出未知东西的探索,使人们从过去和现在的基础上了解未来;使人们转换视角,从不同的角度或侧面看问题;迫使人们在考虑目标和解决问题的要求时,出同时注意考虑协调、控制、分析水平和贯彻执行的问题;诱导新的发现,注意进行从目的到手段的全面调查等。系统分析方法是指把要解决的问题作为一个系统,对系统要素进行综合分析,找出解决问题的可行方案的咨询方法。2.1功能需求****智能公交管理系统是"****‘智慧城市’规划建设"的一个重要组成部分,乘坐公共交通工具出行是缓解交通压力的有效手段。为了方便市民能够方便、快捷的了解到当前公交线路的状况,以及换乘线路的选择,方便于公交公司对公交线路定期更换的管理等等。****智能公交管理系统是以公交查询为主要功能的公交管理系统。用户进入系统的后,可以根据公交线路对公交站台进行查询,也可根据起点站和终点站,查询最短公交线路,其中包括中转车详细信息等;用户可以在车次更新界面,查看最新公交站点以及其站台名的详细信息;用户可以运用留言板进行留言,也可以使用QQ、邮箱等工具给管理员留言,管理员会根据这些提议,更改系统的相关信息;本系统为用户设置了一个会员中心模块,用户可以进行注册、登录操作,用户登录后,可以对自己的信息进行设置、更改。经过以上分析并结合对****智能公交管理系统的实际调研,确定该系统应实现的系统功能用例图。其中各个用例的功能如下:1.会员中心:包括用户的注册、登录、注销功能。2.车次查询:包括对固定车次进行查询、公交转乘进行查询。3.车次更新:包括车次更新后,用户能够及时的了解到所有车次的详细信息,包括车次名、车次详细等。4.留言板:用户对本系统进行留言,也可使用QQ、邮箱、博客等方式进行留言管理。图2-1系统功能用例图2.2性能需求1.灵活性系统采用三层式架构设计开发,体系更加灵活,当用户的需求在某些方面发生变化时,设计的软件就需要做适当的调整,灵活性非常大。2.安全性系统的安全性包括保密性、完整性和可用性,该系统需用户输入用户名及密码才能登录并使用。如果用户名及密码输入错误,就会提示登录失败,用户就无法使用该系统。3.实用性该系统基本上适用于各中小型企业,当企业遇到问题的时候,系统就会提供各种有效的解决方案来帮助企业解决问题。4.可维护性系统要求负责人每季度维护一下,查看系统的使用情况,维护的目的是要保证系统正常而可靠地运行,并能使系统不断得到改善和提高,以充分发挥作用,维护要有计划、有组织的进行。系统设计系统设计是将问题转换为解决方案的创造性过程,对解决方案的描述也称为系统设计。设计一个系统,就是确定满足一组特定需求的构件集以及构件之间的接口。3.1系统模块设计根据需求列表和功能相似的原则,将整个系统分成五个模块:车次查询、车次更新、留言板、会员中心、管理员。下面具体介绍这些模块所包含的内容。1.车次查询模块:对公交线路进行查询。如图3-1所示:图3-1车次查询模块顺序图2.车次更新模块:查看所有公交线路的公交站点。如图3-2所示:图3-2车次更新模块顺序图3.留言板模块:对本站点提出相交建议,进行留言。如图3-3所示:图3-3留言板模块顺序图4.会员中心模块:会员登录、注册管理,会员的本信息管理。如图3-4所示:图3-4会员中心模块顺序图5.管理员模块:管理员登录,管理所有的公交线路、站点与用户。如图3-5所示:图3-5管理员模块顺序图3.2实体类设计本系统的实体类图。图3-6所有用户图3-7用户登录信息图3-8bus线路信息图3-9留言板功能图3-10用户登录详细信息图3-11用户注册、个人信息图3-12用户信息修改申请图3-13用户体验3.3数据库设计3.3.1数据库表用实体类映射出数据表,整个系统共有8个数据表表3-1留言板表〔guestbook字段名称类型为空自增主键注释Idint√用户IDnickNamevarchar<50>显示名Picvarchar<80>显示图片emailvarchar<80>链接的emailQqvarchar<80>链接的qqweburlvarchar<80>链接的主页blogurlvarchar<80>链接的博客expressionsvarchar<80>表情contentvarchar<80>连接addtimedatatime添加的时间Ipvarchar<20>添加的ipreplaybool重置irhidebool隐藏表3-2bus线路表〔bus字段名称类型为空自增主键注释idint√序号xianlumingvarchar<50>线路名称tujingzhanvarchar<200>中途站点gxint换乘数表3-3用户表〔admin字段名称类型为空自增主键注释idint√用户IDusernamevarchar<50>用户名passwordvarchar<50>密码createtimedatatime创建时间flagbool标志issuebool是否选择logintimesdatatime登录时间quanxianint权限表3-4用户登录信息表〔member字段名称类型为空自增主键注释idint√用户IDusernamevarchar<50>用户名passwordvarchar<50>密码typevarchar<50>类型ifusebool是否被使用logintimesdatatime登录时间lasttimedatatime最后使用时间lastipvarchar<20>最后登录ip表3-5用户个人信息表〔pmember字段名称类型为空自增主键注释idint√用户IDmidvarchar<50>用户申请名realnamevarchar<50>确认申请名sexvarchar<50>性别birdatatime生日shengvarchar<50>省cityvarchar<50>城市telephonevarchar<20>电话emailvarchar<50>邮件questionvarchar<100>问题answervarchar<80>答案addressvarchar<60>地址表3-6用户申请表〔replay字段名称类型为空自增主键注释idInt√用户IDmidvarchar<50>用户申请名replayvarchar<50>重新申请名replayervarchar<50>重新申请者replaytimedatatime申请时间表3-7用户乘车感受表〔system字段名称类型为空自增主键注释idint√√用户IDsitenamevarchar<50>乘坐站点urlvarchar<50>线路名keywordvarchar<50>密码descriptionvarchar<50>描述emailvarchar<50>邮箱statevarchar<50>开始reasonsvarchar<50>理由dirvarchar<50>目录recordvarchar<50>记录copyrightvarchar<50>版权表3-8管理员登录表〔adminlog字段名称类型为空自增主键注释idint√用户IDusernamevarchar<50>用户名passwordvarchar<50>密码logintimesdatatime登录时间logipvarchar<50>登录ipuserosvarchar<50>登录系统okbool是否成功登录数据表的依赖关系图3-14数据结构图第4章系统实现4.1开发环境配置1.客户端环境:〔1MicrosoftWindows7操作系统〔2IE9.0浏览器2.服务器环境:〔1操作系统:MicrosoftWindowsServer2003〔2数据库系统:SQLServer2005〔3开发语言:Java〔4开发环境:MyEclipse6.5,MicrosoftVisio2003数据表创建启动SQLServer2005,打开SQLServer2005命令客户端,编写数据库SQL文,执行SQL文,并插入测试数据。4.1.2数据源的配置1.添加SQLServer2005数据库连接驱动jar包;2.项目中新建连接数据库的类,对其进行配置〔代码4-1。publicstaticfinalStringDIREVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; publicstaticfinalStringURL="jdbc:sqlserver://localhost:1433;databasename=bus"; publicstaticfinalStringUSER="sa"; publicstaticfinalStringPWD="sa123 publicConnectiongetConnection<>{ Connectionconn=null; try{ Class.forName<DIREVER>; conn=DriverManager.getConnection<URL,USER,PWD>; }catch<ClassNotFoundExceptione>{ e.printStackTrace<>; } returnconn;}代码4-1数据库连接配置Struts2的配置1.在WEB-INF目录下lib文件夹,将Struts-legacy.jar、Struts.jar复制到该文件夹下。2.在WEB-INF目录下web.xml中的"</web-app>"之前添加代码。<Struts><beanclass="com.opensymphony.xwork2.ObjectFactory"name="xwork"/><beantype="com.opensymphony.xwork2.ObjectFactory"name="Struts"class="org.apache.Struts2.impl.StrutsObjectFactory"/><beantype="com.opensymphony.xwork2.ActionProxyFactory"name="xwork"class="com.opensymphony.xwork2.DefaultActionProxyFactory"/><beantype="com.opensymphony.xwork2.ActionProxyFactory"name="Struts"class="org.apache.Struts2.impl.StrutsActionProxyFactory"/></sturts>代码4-2配置web.xml3.在WEB-INF目录下新建Struts-config.xml文件,用来对Sturts2进行配置。<Struts-config><data-sources/><form-beans/><global-exceptions/><global-forwards/><action-mappings><actionpath="/hzps"type="com.csgw.action.HzpsAction"><forwardname="admindelPrep2"path="/prep/prep.jsp"/><forwardname="upprep"path="/prep/index.jsp"/><forwardname="tejiadeltrave"path="/hzp/tejia.jsp"/><forwardname="hotdeltrave"path="/hzp/hot.jsp"/><forwardname="mdelPost"path="/member/prep/yi.jsp"/><forwardname="addType"path="/hzp/type.jsp"/><forwardname="deltrave"path="/index.jsp"/><forwardname="addprep"path="/index.jsp"/></action><actioninput="/aion/buy.jsp"path="/abuy"type="com.action.BuyAction"><forwardname="success"path="/aion/buy.jsp"/></action><actioninput="/aion/gbook.jsp"path="/agbook"type="com.action.GbookAction"><forwardname="success"path="/aion/gbook.jsp"/></action><actioninput="admin/gbook/index.jsp"path="/amgbook"gbookAction"><forwardname="ex"path="/aion/index.jsp"/><forwardname="success"path="admin/gbook/index.jsp"/><forwardname="replay"path="admin/gbook/r.jsp"/><forwardname="flag"path="admin/gbook/flag.jsp"/></action></action-mappings><message-resourcesparameter="com.csgw.ApplicationResources"/></Struts-config>代码4-3配置Struts-config.xml4.2首页用户输入正确网址后,浏览器会自动跳转到首页如图4-1所示:图4-1首页4.3车次查询模块车次查询页面当用户在首页单击"车次查询"时,会向Servlet传送Search动作,用户输入要查询的公交站名或者线路后,点击提交查询操作,服务器会将textbox框中的内容向Servlet传送Search动作。如图4-2所示:图4-2车次查询管理页面线路名称为103路,输入"103"后,点击"提交查询"按钮,系统会显示所经过的全部站点名称。如图4-3所示:图4-3车次查询界面页面<%Stringxl=request.getParameter<"xl">;xl=Common.toChineseAndTrim<xl>; Listpagelist3=cb.getCom<"select*frombuswherexianluming='"+xl+"'",4>; if<!pagelist3.isEmpty<>>{ for<inti=0;i<pagelist3.size<>;i++>{ Listpagelist2=<ArrayList>pagelist3.get<i>; %>代码4-4车次查询代码4.4车次更新模块车次更新页面用户点击"车次更新"时,会向Servlet传送Search动作,结果是一个List对象,从数据库中读出来,然后将列表中的信息显示出来。以便于用户能够直观的看出每条线路的详细信息。如图4-4所示:图4-4车次更新管理页面<% cb.setEVERYPAGENUM<6>; intcou=cb.getMessageCount<"selectcount<*>frombus">; Stringpage1=request.getParameter<"page">; if<page1==null>{ page1="1"; } session.setAttribute<"busMessageCount",cou+"">; session.setAttribute<"busPage",page1>; Listpagelist1=cb.getMessage<Integer.parseInt<page1>,"select*frombusorderbygxdesc",4>; session.setAttribute<"qqq",pagelist1>; intpageCount=guestbean.getPageCount<>; session.setAttribute<"busPageCount",pageCount+"">; Listpagelist3=<ArrayList>session.getAttribute<"qqq">; if<!pagelist3.isEmpty<>>{ for<inti=0;i<pagelist3.size<>;i++>{ Listpagelist2=<ArrayList>pagelist3.get<i>; %>代码4-5车次更新代码4.5留言板模块留言板主页面当用户单击"留言板"时,用户默认以"游客"的身份进行留言,留言的好处就在于管理员能够及时了解用户的需求,对系统进行更新。当然,用户也可以进行登录后进行留言。如图4-5所示:图4-5留言板主页面<% Stringmember=<String>session.getAttribute<"member">; if<member==null>member="游客"; guestbean.setEVERYPAGENUM<6>; intcou=guestbean.getMessageCount<>; Stringpage1=request.getParameter<"page">; if<page1==null>{ page1="1"; } session.setAttribute<"busMessageCount",cou+"">; session.setAttribute<"busPage",page1>; Listpagelist1=guestbean.getMessage<Integer.parseInt<page1>>; session.setAttribute<"qqq",pagelist1>; if<!pagelist3.isEmpty<>>{ for<inti=0;i<pagelist3.size<>;i++>{ Listpagelist2=<ArrayList>pagelist3.get<i>; Listreplay=guestbean.getReplayInfo<Integer.parseInt<pagelist2.get<0>.toString<>>>; %>代码4-6留言板代码4.6会员中心模块会员注册页面1.当用户单击"会员管理"时,新会员可以进行注册。如图4-6所示:图4-6会员注册条约管理页面2.用户的自定义数据,包括用户名、密码。如图4-7所示:图4-7用户数据的添加页面if<flag==Constant.SUCCESS>{ ListsiteList=newSystemBean<>.getSiteInfo<>; Stringsitename=siteList.get<0>.toString<>; request.setAttribute<"message","注册成功!恭喜您成为"+sitename+"的注册会员!">; request.getRequestDispatcher<"login.jsp">.forward<request,response>; }代码4-7会员注册代码会员登录页面登录页面中,当输入完用户名、密码、验证码之后,单击"登录"按钮后会将登录请求传递给ACTION。ACTION得到请求后调用相对应的方法,到数据进库中进行查询。将信息传到客户端。如图4-8所示:图4-8会员登录页面response.setContentType<Constant.CONTENTTYPE>; request.setCharacterEncoding<Constant.CHARACTERENCODING>; HttpSessionsession=request.getSession<>; MemberBeanmemberBean=newMemberBean<>; Stringmethod=Filter.escapeHTMLTags<request.getParameter<"method">.trim<>>; if<method.equals<"HEADUSERLOGIN">>{ Stringreg_user=Filter.escapeHTMLTags<request.getParameter<"reg_user">.trim<>>; Stringreg_pwd=Filter.escapeHTMLTags<request.getParameter<"reg_pwd">.trim<>>; Stringreg_type=Filter.escapeHTMLTags<request.getParameter<"reg_type">.trim<>>; Stringlastip=request.getRemoteAddr<>; intflag=memberBean.memberLogin<reg_user,reg_pwd,reg_type>; if<flag==Constant.SUCCESS>{//登陆成功 Stringinfo=memberBean.getLastTimeIP<reg_user>; intflag2=memberBean.upmemberLogin<reg_user,lastip>; if<flag2==Constant.SUCCESS>{ session.setAttribute<"member",reg_user>; session.setAttribute<"type",reg_type>; session.setAttribute<"info",info>; request.getRequestDispatcher<"login1.jsp">.forward<request,response>; } else{ session.setAttribute<"member",reg_user>; session.setAttribute<"type",reg_type>; session.setAttribute<"info",info>; session.setAttribute<"message","登陆成功,登陆信息更新失败!">; request.getRequestDispatcher<"login1.jsp">.forward<request,response>; } } elseif<flag==Constant.NAME_ERROR>{//用户名错误 request.setAttribute<"reg_user",reg_user>; request.setAttribute<"message","该用户名不存在或者已被管理员冻结!">; request.getRequestDispatcher<"login1.jsp">.forward<request,response>; } elseif<flag==Constant.PASSWORD_ERROR>{//密码错误 request.setAttribute<"reg_user",reg_user>; request.setAttribute<"message","密码错误!">; request.getRequestDispatcher<"login1.jsp">.forward<request,response>; } }代码4-8会员登录代码4.7管理员模块会员登录当用户单击"管理登录"时,就进入了管理员管理页面。如图4-9所示:图4-9管理员管理页面if<username.equals<"admin">&&password.equals<"123">> intcount=this.userDao.loginUser<user.getUsername<>,user.getPassword<>>; if<count>0> { list=userDao.showUserList<>; session.put<"mySession",user>; //username=userDao.getMyNameByPassword<password>; //list=userDao.showUsers<>; returnSUCCESS;代码4-9管理员登录代码图4-10网站后台管理中心页面系统用户管理图4-11系统用户管理页面图4-12修改登录管理页面StringuserName=session.get<"user">.toString<>; intflag=adminDao.changePassword<userName,oldPwd,newPwd>; switch<flag>{ caseConstant.SUCCESS: request.put<"message","密码修改成功!">; returnSUCCESS; caseConstant.PASSWORD_ERROR: request.put<"message","原始密码错误,请确认管理权限!">; returnNONE; default: returnERROR; }代码4-10修改管理员代码公交信息管理图4-13公交信息管理页面ActionContextcontext=ActionContext.getContext<>; HttpServletRequestrequest=<HttpServletRequest>context.get<ServletActionContext.HTTP_REQUEST>; pageHelper.setEveryPageNum<12>; intcou=pageHelper.getMessageCount<"selectcount<*>frommember">; Stringpage=request.getParameter<"page">; if<page==null>{ page="1"; } request.setAttribute<"busMessageCount",cou>; request.setAttribute<"busPage",page>; List<Bus>busList=newArrayList<Bus><>; busList=pageHelper.getBusMessage<Integer.parseInt<page>>; request.setAttribute<"busList",busList>; intpageCount=pageHelper.getPageCount<>;//得到页数 request.setAttribute<"busPageCount",pageCount>;Busbus=newBus<>; intid=Integer.parseInt<request.getParameter<"id">>; bus=busDao.getBusById<id>; request.setAttribute<"bus",bus>; returnSUCCESS;代码4-11公交信息管理代码图4-13添加车次信息管理页面intid=Integer.parseInt<request.getParameter<"id">>;intflag=busDao.updateBus<id,pathName,stations>;request.setAttribute<"message","修改成功!">;returnSUCCESS;Busbus=newBus<>;intid=Integer.parseInt<request.getParameter<"id">>;bus=busDao.getBusById<id>;request.setAttribute<"bus",bus>;returnSUCCESS;代码4-12修改车次代码BusDaobusDao=newBusDaoImpl<>; ActionContextcontext=ActionContext.getContext<>; HttpServletRequestrequest=<HttpServletRequest>context.get<ServletActionContext.HTTP_REQUEST>;intflag=busDao.addBus<pathName,stations>; request.setAttribute<"message","添加成功!">;代码4-13添加车次代码注册会员管理图4-14注册会员管理页面ActionContextcontext=ActionContext.getContext<>;HttpServletRequestrequest=<HttpServletRequest>context.get<ServletActionContext.HTTP_REQUEST>;intid=Integer.parseInt<request.getParameter<"id">>;intflag=memberDao.changeIsUse<id>;ActionContextcontext=ActionContext.getContext<>;HttpServletRequestrequest=<HttpServletRequest>context.get<ServletActionContext.HTTP_REQUEST>;StringcheckId[]=request.getParameterValues<"checkit">;intid[]=newint[checkId.length];for<inti=0;i<checkId.length;i++>{ id[i]=Integer.parseInt<checkId[i]>;}MemberInfomemberInfo=newMemberInfo<>;intid=Integer.parseInt<request.getParameter<"id">>;memberInfo=memberDao.getMemberById<id>;ActionContextcontext=ActionContext.getContext<>;HttpServletRequestrequest=<HttpServletRequest>context.get<ServletActionContext.HTTP_REQUEST>;pageHelper.setEveryPageNum<10>;intcou=pageHelper.getMessageCount<"selectcount<*>frommember">;Stringpage=request.getParameter<"page">;request.setAttribute<"memberMessageCount",cou>;request.setAttribute<"memberPage",page>;List<Member>memberList=newArrayList<Member><>;memberList=pageHelper.getMemberMessage<Integer.parseInt<page>>;request.setAttribute<"memberList",memberList>;代码4-14注册会员代码第5章系统测试5.1测试线路查询测试能否根据用户所输入的站台名,正确的找出所有的站点。测试数据设计测试数据:查询方式:根据站台名查询站台名:103测试过程点击网站首页"车次查询"来到车次查询管理页面并输入测试数据,根据线路名称查询,如图5-1所示:图5-1车次查询管理输入线路名称后点击提交查询,得到信息。如图5-2所示:图5-2车次查询管理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重要概念与Msoffice考试试题及答案
- 农村修房合同协议书格式
- 逻辑思维训练的反思与优化与试题及答案
- 美团跑腿合同协议书
- 民间合伙人合同协议书
- 出国保姆合同协议书范本
- 终止租房合同协议书个人
- C语言学习社区的重要性试题及答案
- 洗车店用工合同协议书
- 学校餐饮员工合同协议书
- 2025版亚马逊FBA物流配送及电商运营服务合同3篇
- 不良资产处置模式演进探析
- 金属非金属矿山安全作业实际操作考评标准
- 【MOOC】保险学概论-中央财经大学 中国大学慕课MOOC答案
- GIS安装标准化作业指导书
- C919飞机首飞试飞机组培训-指示记录
- 社保费扣费协议书范文范本下载
- 【一等奖课件】《刑事摄像技术》比赛课题:现场照相内容及方法
- 卷纸有多长(教学设计)-2023-2024学年六年级下册数学北师大版
- VDA6.3 2023 过程审核检查表-参考表单
- 数据库原理英文选择题
评论
0/150
提交评论