版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绪论课题背景及意义随着社会的不断发展和进步,人们的生活水平日渐提高,对于各项服务的需求也越来越高。旅游是一个综合性的行业,集吃、住、行、购、玩等各个环节为一体,在发展旅游业的同时也能带动其他相关产业产业链的发展,更能刺激消费水平的提高,实现社会经济增长。近年来,不管是出境游还是国内游,我国的旅游业都有了巨大的发展,并存在着很大的发展空间,在世界旅游市场中的地位得到了显著的提升。但是随着互联网的迅速发展和普及,传统旅游行业受到了巨大的挑战,传统旅游模式已经无法使用户的需求得到满足,不再适应当今这个飞速发展的时代。传统旅游模式存在着诸多限制,比如旅游景点和线路都是固定的,并且每个景点的参观时间都是固定的,消费者无法进行自主选择。在这些旅游计划中,消费者很少能够遇到一条线路的所有景点都是自己喜欢的,而且在自己尤其喜欢的景点也不能长时间停留,使消费者的消费体验极差。同时,传统旅游模式中为了能够缩短旅行时长和增加旅游景点数,使旅游行程大都安排的极其不合理,导致消费者在旅行途中得不到应有的放松,反而会觉得更加疲惫,与出门旅行的目的大相径庭。传统旅游也增加了许多热门的景点,尤其是商业景点的压力,而许多值得一去的小景点根本得不到应有的开发,导致消费者旅行质量的下降。通过对传统旅游模式所蕴含缺点的分析,我们可以针对其存在的问题加以优化,在传统旅游模式的基础上增加个性化的服务,以满足消费者需求。这时,能够针对用户需求提供服务的一站式旅游服务平台的出现也就显得尤为必要。旅游网站的出现可以更好的满足用户需求,为用户提供更加自由,也更加适应个人情况的个性化旅游服务。目前,国内的大型旅游网站由飞猪、携程、去哪儿、马蜂窝等,可以提供火车票、机票的预定、酒店的预订、门票的预定,并能为用户提供路线规划,提供向导服务,实现个性化旅游。这些旅游网站很好的摆脱了传统旅游的限制,让用户能够掌握旅游的自主权,优化了用户的出行体验。另外,从国际旅游业发展的大环境来看,世界旅游业的发展也已经进入了全新的阶段,旅游已经成为各国提供就业机会、提高出口收入以及提高基础设计建设的关键动力之一。有调研结果表明,在2017年,我国的每年每人出游次数已经达到了平均3.7次,而旅游的总人数也超过了50亿人次。到了2018年,旅游的总人数达到亿人次,我国GDP综合贡献有11.04%来自旅游业。2019年全年,我国国内旅游人次达60.1亿,较上年增长8.4%;我国旅游方面相关收入达57251亿人民币,较上年增长11.7%,入境游客达14531万人次,较上年增长2.9%。表1-12015-2019年国内游客人次及增长速度年份2015年2016年2017年2018年2019年国内游客人数(亿人次)39.944.450.055.460.1国内游客人数增长速度10.5%11.0%12.8%10.8%8.4%图1.12015-2019年国内游客人次及增长速度如图表所示,近年来国内游客人数呈持续上升趋势。现在,我国也越来越重视旅游业的发展,并出台了一些相关政策,使得旅游业已经成为国民经济中必不可少的一部分。系统设计的目标及主要工作内容本平台主要是通过Javaweb语言,配合SQL语句实现网页的设计及数据库的连接。主要使用的方法为面向对象的程序设计。面向对象是最常用的软件开发方法之一,是一种抽象的方法,是相对于面向过程来说的。面向对象的方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。面向对象的程序设计是当今主流的程序范型,从根本上来说,只要对象能够满足要求即可。“畅行旅途”一站式旅游服务平台分为前台界面和后台管理两个部分,主要是通过jsp语句来实现页面的布局设计,通过表单来保存用户及商户信息、商品信息、订单信息等;通过编写script代码和函数来使网站得以正常运行。总的来说,本平台以HTML界面为呈现形式,通过表单存储信息,通过SQL语句实现前台与后台的交互,通过编写函数来实现页面功能,在页面呈现出“一站式”的平台效果,帮助用户能够更好的为旅途做好规划。本文的主要工作包括以下内容:1.进行需求分析和可行性分析。解读传统旅行模式的优缺点,结合现有的携程、飞猪、去哪儿等旅行网站的内容,做到能够为用户提供更加多元化、个性化的服务,能够给用户较好的感官体验,更好地满足用户需求。2.网站架构设计。分析和整合现有旅行网站的内容,合理设计页面布局及网站内容,做到网站整洁大方,用户可以直观的寻找到自己需要的内容。深入探讨网站的架构细节,主页以及子页面的联动和实现的方式,以及各功能函数之间的耦合程度。3.功能模块实现。实现游客浏览功能,即用户可以在不登陆的情况下浏览页面信息,但无法进行支付等操作;完成用户模块,实现用户注册和登录功能,用户可以在登录后在个人界面查看及完善用户信息,并进行系列操作;完成商家模块,实现商家注册功能,用户再登录后可以进行商家认证申请,通过申请后成功成为商家,之后便可以上传并修改酒店信息,接收和查看订单;完成支付模块,用户可以对订单的一系列操作,直至支付完成后,订单达成。4.针对系统的测试的结果以及测试的过程,说明系统实现的程度是否达到预期。对于系统设计中的各个模块的功能是否完善可用,主要的实现的难点以及解决的方式,保证系统能够有效的完成预期的设计工作。5.最后对本文所做的工作以及实现的平台网站进行总结和展望。分析本文所述网站的可行性及实用性,并通过与当前行业中存在的携程、飞猪等网站进行对比,分析本文实现的在线旅游服务平台的不足,提出理论可行性的优化方案与改进措施。
系统分析引言系统分析是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要实现什么,而不是考虑如何去实现,目标是把用户对待开发软件提出的要求或需要进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。此外,软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行时与其他软件的关系等也是软件需求分析的目标。需求分析用户需求“畅行旅途”一站式旅游服务平台旨在开发更加丰富的旅游相关资源,用户可以任意的浏览或者分享和获取与旅行相关的资讯,从而规划自己的旅行时间和旅行路线。本旅游服务平台要求界面清晰、完整,有良好的内容和布局设计,能够给用户较好的观感体验。清晰、完整的界面能够增加系统的健壮性,能够正确、流畅的完成页面数据的显示和记录,有利于降低用户的操作难度,更好的解决用户需求。简单的界面有助于增加系统的健壮性,同时可以减少系统的复杂程度,保护用户的真实信息,提高用户的注册意愿,并且节约了时间,有助于系统的推广。本旅游服务平台为用户提供的旅游相关信息必须是真实有效的,不能有虚假信息或不良信息出现。对用户的个人信息必须有绝对的保护,保证用户的个人隐私不受侵犯。对于网站的主要功能——本旅游服务平台至少要包含:主页、用户注册页面、用户登录页面、商家注册界面、商品编辑界面、商品及资讯的列表界面、商品及资讯的详情界面、用户个人信息界面等界面,且较好的实现细节处理。比如在主页可以直观的显示用户的登录状态,在用户未登陆的时候显示的事登陆/注册按钮,而在用户登录后则显示“尊敬的【用户名】,您好!”。功能的实现是软件的内涵,那么界面的展示则是软件的容颜,良好的界面与用户的交互,能够使用户更加直观的理解与上手使用,因交互界面较多,所以要做好各个页面之间的联动和信息传递。内部代码的编写要尽量符合规范,重要的函数方法与接口要有明确的注释说明,类与类之间尽量设计为松耦合,减少全局变量的使用,每个类尽量减少对于全局变量的引用,引用时要有详细的注释声明。同时变量的起名方式也要合乎规范,不能随意起名,起无意义的变量名,每个变量名要有实际意义,不断优化无意义的变量名,方便程序在今后的修改、维护和升级。系统需求本旅游服务平台主要Java语言进行编写,Java语言有丰富的UI界面可以满足对该仿真平台对于界面的要求,同时Java作为面向对象的语言,采取每个类单独封装的方式,可以更加简单与容易的编写该仿真平台,同时也有利于项目的后期修改与维护。从下面三个方面对该仿真系统进行需求分析。1.功能需求功能需求是有关软件系统的最基本的需求表述,用于说明系统应该做什么。本旅游服务平台主要是将景点信息、酒店信机票、火车票等信息集成至一个平台,方便用户规划自己的旅行时间和旅行路线。网站首页需实现对信息的集成并提供给用户进行浏览,主要包括热门城市、酒店查询、民宿查询、餐饮服务、特价机票、旅行攻略几个板块。热门城市:按时下旅游的热门度给城市进行排序,并分城市推荐热门景点及酒店餐饮等信息。酒店查询:输入城市和酒店名称/酒店位置,查询符合条件的酒店。民宿查询:输入城市和民宿名称/民宿位置,查询符合条件的民宿。餐饮服务:输入城市和餐厅名称/餐厅位置/美食种类,查询符合条件的餐厅。特价机票:输入起点、终点城市,按价格顺序罗列符合条件的机票。旅行攻略:输入城市,可以查看相关景点的旅游测评。用户注册:用户只有在注册并登陆之后才能查看并修改个人信息,进行支付操作。商家注册:用户可以注册成为商家,在认证成功之后可以上传并修改商品信息。商品及资讯的列表界面需要对现有的商品及咨询进行整理,供用户浏览,并可以点击单个商品或单条资讯进入商品及资讯的详情界面,查看商品或资讯的具体信息。2.数据需求本平台页面较多,功能也较为复杂,内含用户信息、商家信息、商品信息、资讯信息等诸多数据,且在各个页面之间都进行着数据传递,因此对数据的需求较高,会利用到数据库的相关功能实现对数据的增删改查。其中每个种类的信息都需要使用一个单独的类,并编写动态方法实现对数据的处理过程。3.其他需求为保证界面的整洁性和观赏性,最好设计网站独有的logo,并将商品或资讯的图片加以直观显示,因此可以利用css文件对于页面布局及标签做相应的调整。可行性分析当我们研究一个项目时,首先应该解释我们的目标和任务,然后仔细研究该项目,并进入项目开发的第一阶段。我们将从技术可行性及运行可行性两个部分进行正确性的研究。技术可行性分析面向对象具有维护简单、质量高、效率高、可扩充性等特点,其基本类型是类,所谓类就是对事物特征的概括,是对变化规律的概括,实质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。同时Java语言是纯面向对象的语言,并且提供了多种内置的API,可以帮助我们更好的进行面向对象的开发,尤其是其跨平台的特点,可以让仿真平台在多种计算机平台上运行,增加了平台的兼容性。同时Java语言是纯面向对象的语言,并且提供了多种内置的API,可以帮助我们更好的进行面向对象的开发,尤其是其跨平台的特点,可以让应用软件在多种计算机平台上运行,增加了平台的兼容性。利用Java对象去模拟数据库中的表的记录。另外java提供了多线程编程。其次Java开发可以利用许许多多已经开发好的Jar包,不必重复造轮子。在工程中需要实现的功能只需要引入相应的Jar包,在此基础上在需要的位置调用其中的方法和属性,以此来实现我们先要实现的功能。运行可行性分析随着互联网的迅速发展和普及,传统旅游行业受到了巨大的挑战,传统旅游模式已经无法使用户的需求得到满足,不再适应当今这个飞速发展的时代。传统旅游模式存在着诸多限制,比如旅游景点和线路都是固定的,并且每个景点的参观时间都是固定的,消费者无法进行自主选择。在这些旅游计划中,消费者很少能够遇到一条线路的所有景点都是自己喜欢的,而且在自己尤其喜欢的景点也不能长时间停留,使消费者的消费体验极差。同时,传统旅游模式中为了能够缩短旅行时长和增加旅游景点数,使旅游行程大都安排的极其不合理,导致消费者在旅行途中得不到应有的放松,反而会觉得更加疲惫,与出门旅行的目的大相径庭。通过对传统旅游模式所蕴含缺点的分析,我们可以针对其存在的问题加以优化,在传统旅游模式的基础上增加个性化的服务,以满足消费者需求。这时,能够针对用户需求提供服务的一站式旅游服务平台的出现也就显得尤为必要。旅游网站的出现可以更好的满足用户需求,为用户提供更加自由,也更加适应个人情况的个性化旅游服务。系统功能分析本旅游服务平台主要集成了机票、酒店、民宿、餐饮和热门景点的相关信息供用户浏览,同时用户可以在本站进行注册。在注册成为本站用户后,可以进行个人信息修改,对浏览到的机票、餐饮等信息完成支付操作,也可以申请成为商户,上传自己的酒店、民宿或餐厅的相关信息,用户可以对商户上传的信息进行浏览和支付操作。系统总体功能结构图如图2.1所示。图2.1系统总体结构本章小结要做好一个项目或平台,必须要先搞清楚这个项目或平台的目的是什么,我们要把用户对待开发软件提出的要求或需要进行分析与整理,确认后形成描述完整、清晰与规范的文档,从而确定软件需要实现哪些功能,完成哪些工作。需求分析在软件开发周期中起着十分重要的作用也可以说起着决定性作用,它是每一个软件产品在设计与实现之前必须进行的。当然了,该项工作如此重要,一定也有它的难度。本章从需求分析、可行性分析及系统功能分析三个方面进行了系统分析,对于准确的把握平台的研究方向有着重要作用。
系统设计开发技术与思想MyEclipse+TomcatMyeclipse是在一款eclipse软件产品的基础上改造出来的,是一款功能丰富的开发软件。在开发各种程序和实现各种功能等方面都有着巨大的用处,很大程度上提高了用户效率。它其实就相当于一个功能插件,并且它具有使用范围广泛,能够实现多种功能等诸多优点,且支撑目前流行的几乎所有开源工具。例如JSP,Spring,Servlet,AJAX等等。而在结构上,Myeclipse的特征有WEB开发工具,应用程序服务器的连接器等等7大类。这种结构布局使得各个模块各自运行,互不影响,单独完成各自的升级或者扩展。MyEclipse是基于eclipse插件的解决方案,功能强大,版本更新迅速,不断完善已有功能,弥补漏洞,方便开发。MyEclipse具有完备的编码、调试、测试和发布功能,是一款功能丰富的JavaEE集成开发环境。另外,MyEclipse还有很好的自动查错功能、自动补全功能。程序员在进行项目开发的时候,可以方便准确的找出出错的地方。此外,自动补全功能也可以大大节省程序员的编程时间,极大的提高了工作效率。总之,在进行软件系统开发时,一个得心应手的开发环境是十分必要的,这一点是会影响到开发的效率。Myeclipse很好的解决了这样的难题,为软件开发提供了便利条件。MyEclipse这一开发工具,每个版本都有其各自的特点,本平台的开发使用的是MyEclise2014。Tomcat服务器是一个免费的应用服务器,因为其免费又好用,功能强大,所以成为大多数程序员的首选。Tomcat是一个小型的,轻量级的软件产品,他在启动运行时占用非常少的内存资源和系统开销,扩展性能比较好,支持多种应用需求,如果一个开发员对某一项功能实现特别感兴趣,他就直接可以将此功能加入到其中。Tomcat可以独立运行,身为网站的服务器,可以加载动态网页。MySQL+JSP+JavaBean+ServletMySQL是一个关系型数据库管理系统,使用的SQL语言是用户访问数据库的最常用的标准化语言。MySQL数据库设计简单易懂,功能相对来说比较全面,为软件产品的开发应用提供了良好的环境和数据帮助。关系型数据和结构化数据为数据库提供了新的功能,使得信息能够更好的存储和组织,完善了SQL数据库,这样一来,程序员可以运用这一优势,在软件产品开发过程中,能够为用户开发出高质量高性能的数据应用软件。用户凭借此完成了对方案的构建。MySQL数据库为实现系统后台与前台连接起到了十分重要的地位。一个没有连接数据库的系统是无法实现任何有价值的功能的。数据库可以帮助开发人员整合管理数据,有效实现系统所需功能,同时还可以进行权限的设置和数据的添加。总之,MySQL可以满足人们基本的几乎所有要求,为其提供一套经济,有效的开发策略,使得用户付出最少的代价获得最多的回报。JSP(即Javaserverpage)为servlet技术的简化,是一种能实现动态网页的技术。因为JSP与Servlet均在服务器端运行,故而往往以HTML文本为主要形式呈现客户端面前,所以当有
需求时,客户端可以便捷地通过浏览器来实现浏览。当web端收到访问JSP的请求时,首先执行程序段,而后将结果与html返回,以便系统更好运行。JSP技术通俗来说其实就是在普通的网页HTML文件中首先加上Java程序段来实现具体功能,然后再根据需要添加JSP标记(tag)进行记录,这样二者结合就可以形成JSP文件。因为有些浏览器并不支持Java语言,然而这不影响功能操作的实现,同样能够登录JSP网页,达到预想效果。同时,我们也应该认识到JSP技术所使用的两种程序:即类XML的tags和scriptlets,这些都是用Java语言实现的。Java语言是一种完全面向对象的语言。具有继承,多态性,封装性等特点,还具有垃圾自动回收机构,程序员不用考虑内存使用不足的情况,因为内存在程序员不再使用后的一段时间内会自动释放。而且具有跨平台性。这些别的语言所没有的特点让Java能够快速发展强大起来,它吸收了计算机领域的各种最新成果,功能十分强大。Java的应用也是到处可见,从计算机到移动平台,从办公软件到手机应用,从小型系统到大型企业,Java身影无处不在。Java能得到如此广泛的应用的另一个重要原因是因为Java语言是动态的,它可以适应动态变化环境。系统功能需求分析系统界面设计分析一个美观、清晰、操作便捷的界面可以增加用户量,吸引更多的人进行访问。通过对界面的访问,用户可以在最短时间内了解该网站的功能、属性、特点等等,同样也可以满足自己的需求。所以,在进行界面设计的时候一定要多花时间使得界面具有吸引力并且以最少的语言和图形传达最多的信息。该网站在设计界面的时候是根据以下几个方面进行的:图文搭配。在进行界面设计的时候,太多的文字会使得用户觉得晦涩难懂,不愿意多花时间去进行研究。所以很有必要用图片进行展示,再加以必要的简洁的文字说明,这样用户会节省大量的时间去浏览更多网页并且可以获得自己想要的信息。本平台界面设计采用文字加图片的形式,文字可以直观的向用户传递具体模块构造与功能,而图片可以更加形象的让用户感受到旅游地方的具体实景。界面设计应当美观大方。太多的文字会使人们感觉到无聊不愿意阅读,然而太多的图片、动画也同样会使得界面太过花哨,凡事应该讲究适度原则。所以,在进行界面设计的时候切记要做到美观大方。本平台网站在设计的时候秉承这个原则,整个界面大方又不失美感。既不是一味的进行文字说明,也不是夸张的色泽艳丽。字体选用应该注意突出重点。文字说明的时候也有讲究,对于重点的内容,就应该加以特别说明,字体应该适当加粗或者换种颜色。色彩搭配应该柔和。在进行界面美化设计方面,色彩搭配也是一个很重要的环节。界面应该具有自己的主色调,而这个主色调最好采用暖色,这样可以给人一种柔和亲切的感觉。另外,界面颜色不宜太多。与网站所宣传的内容相符合、有自己的特色就好。用户注册模块设计分析用户的登录和注册功能在任一产品中都必不可少,它可以收集用户信息,以确保资金流动方向有迹可循,对于业务的实现和产品的运行都有着巨大的作用。用户在注册时,需输入用户名、密码、手机号和验证码,其中用户名唯一,不可与之前注册过的用户名完全相同;密码需输入两次,两次相同且符合输入规范即可通过验证,以避免用户在某次输入时出现意外错误;手机号必须输入11位大陆可用手机号,不然无法通过注册;验证码随机生成,用户可观察图片,将随机生成的数字或密码输入验证框,匹配成功即可通过验证;在所有项符合规范后,提示用户注册成功,否则提示失败项,返回注册界面。用户可以在任意界面点击注册按钮进行注册,按照提示输入正确信息后即可完成注册,用户在注册成功之后,可以编辑自己的个人界面,对浏览到的机票、餐饮等信息完成支付操作。用户注册流程图如图3.1所示。图3.1用户注册流程图商户注册模块设计分析用户在完成登录后,可以在个人信息界面申请注册成为商家,再输入商家具体信息之后可完成注册。用户在注册成为商家时,需认真填写商家信息,包括商家名称、地址和商户种类,其中商户种类为单选按钮,在酒店、民宿、餐饮之间只能选其一。在商户信息通过审核之后,用户成哥注册成为商家,在用户个人界面多出商户界面选项,点击进入商户界面后可以编辑商户信息,包括添加/修改商品信息,查看订单和取消商户认证等等。商家注册流程图如图3.2所示。图3.2商家注册流程图支付模块设计分析无论用户是否登录,在点击任意界面推荐的商品信息时,就可以进入商品详情界面,查看商品的具体信息。点击详情界面的支付按钮后,若用户未登录,则跳转至登录界面进行登录;若用户已完成登录,就可以进行支付操作。在点击支付按钮后,支付所需的参数就会被传递给支付宝,同时商户会收到返回的form表单,商户再将这个form表单传给前台。用户在完成支付操作后,支付界面提示支付成功,然后返回商户界面。数据库设计存储用户信息的users表单如表3.1所示。表3.1用户信息表属性名类型长度是否为主键备注u_idvarchar50是用于用户登录的账号passwordvarchar50否用于用户登录的密码u_namevarchar50否用户昵称,可自行编辑u_numberchar11否用户手机号u_introductionvarchar200否用户的自我介绍或个性签名shopbool1否用户是否已注册成为商户存储商品信息的list表如表3.2所示。表3.2商品信息表属性名类型长度是否为主键备注kindint1否用于表明商家类型:酒店、民宿或餐饮p_idint10是商品序号,唯一标识p_namevarchar50否商品名称cityint5否商品所在城市地址存储商品详细信息的p_list表单如表3.4所示。表3.4商品详情表属性名类型长度是否为主键备注o_idint10是具体商品种类序号p_idint10外键商品序号p_namevarchar50否商品名称p_typevarchar200否商品类型,说明商品的具体信息p_photovarchar50否存储商品对应图片所在的地址p_pricedouble50否根据所选内容,确定商品价格p_inventoryint5否商品剩余数量,若为0则不可选择p_kindint5否区分同一商品的不同种类存储订单信息的o_list表单如表3.5所示。表3.5订单详情表属性名类型长度是否为主键备注u_idvarchar50否触发订单的用户账号p_idint10否商品序号,用于查找商品信息o_idvarchar11是订单号,用于标明唯一订单o_timedatetime否用于标明订单的创建时间paybool1否订单支付状态本章小结在项目开发的过程中,系统设计是必不可少的一部分。在拿到用户需求之后首先要进行需求分析,在需求分析完毕后,要根据需求分析的内容进行系统设计,不能盲目的直接编写程序,这样可以节约很多在编写程序时的探索过程,有效的提高项目开发的效率。对于“畅行旅途”一站式旅游服务平台的设计与实现,我从开发技术和开发思想、模块设计、数据库设计三个方面进行了分析,化整为零,解剖了项目的开发过程,这样就做到了结构清晰、安排合理,能够更好的实现项目开发,更好的满足用户需求。
系统实现系统实现技术界面的实现利用html5语言编写jsp界面,css语言为页面构造格式和排版。本旅游服务平台主要包括主页、用户注册页面、用户登录页面、商家注册界面、商品编辑界面、商品及资讯的列表界面、商品及资讯的详情界面、用户个人信息界面、购物车界面、订单详情界面等界面。主页:页面上方利用html的<header>标签进行编辑,利用css语言排版,主要包括登录、注册和跳转至个人中心的按钮,网站logo和跳转至各个类型的商品或资讯的列表界面的链接,还有就是可以在网站内进行搜索功能的搜索框。下面则是推荐商品,包括热门酒店和热门餐饮,原理是利用javax.servlet.http中的request和response中的方法来获取数据库中的商品信息,在进入首页前请求Servlet获取相应品类的商品信息,Servlet将从数据库的查询结果发送给index.jsp页面,页面接收信息使用<c:ForEach>标签进行两列的循环控制输出,标签的超链接将带有类别id的请求转发到按类型查询的Servlet,Servlet查询结果转发到商品列表页面,立即选购的超链接将带有商品id的请求转发到按商品id查询的servlet中,Servlet查询结果转发到商品详情页面。相关代码如下。protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //TODOAuto-generatedmethodstub response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("utf-8"); ProductServiceps=newProductServiceImpl(); List<Product>resultlist=ps.SelectAllProduct(); List<Product>resultbyType1=ps.SelectProductByType(1); …… List<Product>resultbyType10=ps.SelectProductByType(10); request.setAttribute("resultlist",resultlist); request.setAttribute("resultbyType1",resultbyType1); …… request.setAttribute("resultbyType10",resultbyType10); request.getRequestDispatcher("newindex.jsp").forward(request,response); }图4-1商品详情页商品详情页:在商品列表中点击商品图片或名称,就可以进入商品详情页面。在商品详情页可以选择商品的种类,详情页面的图片显示和售价会根据选择的商品种类进行相应改变,点击立即选购会将相应商品信息创建订单。在点击图片或名称后,超链接会携带当前商品的信息发送到Servlet根据商品名称查询本商品的所有版本和颜色,之后Servlet将信息发送回页面,页面首先显示默认版本的信息,之后根据鼠标点击事件,获取点击事件的标签,标签id存放的是相应要改变的信息,js函数获取信息后,传给要改变的标签,改变标签符号中间要显示到页面的值,同时改变form表单中相应位置的属性值,以便可以将相应信息发送到之后的页面。界面之间跳转的实现按照面向对象的程序设计设计的思想,每一个界面就是一个类,实现界面之间的跳转,只需要在当前类中去创建另一个类的对象。界面之间数据的传递,有两种实现方法,其中一种是在当前类中需要被引用的属性设置为静态属性,其优点就是减少代码量,可通过类名直接调用;第二种是在目标界面中创建带参构造函数,当前界面通过构造函数实现数据的传递。本平台通过form表单传递数据,通过调用方法类对数据进行处理,然后送入数据库或返回前端,在页面跳转的同时实现对数据的操作。图4-2界面跳转的实现面向对象类的实现在本平台中,因设计功能较多,所用到的功能类也比较多,下面只简要说明部分功能类的实现:(1)数据库连接类(DBUtil)的实现。核心代码如下:publicstaticSqlSessionFactorysqlSessionFactory; static { Stringresource="mybatis-config.xml"; InputStreaminputStream=null; try{ inputStream=Resources.getResourceAsStream(resource); sqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally { if(inputStream!=null) { try{ inputStream.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }使用SqlSessionFactory创建一个
SqlSession。有了会话后,就可以使用它来执行映射语句,提交或回滚连接,最后,当不再需要它时,可以关闭会话。SqlSessionFactory类具有openSession(Connectionconnection)方法,可以使用它与内存数据库中的Connection来检索SqlSession。然后,可以模拟或存根数据源以返回所需的Connection实例。(2)数据持久化类(UserMapper、ShopMapper、listMapper等)的实现。数据持久化类实际上是调用了Java中的接口(Interface),其中定义了对数据库操作的方法,以实现数据的录入。与接口对应的是同名的XML文件。其中UserMapper核心代码如下:publicinterfaceUserMapper{ publicUserselectById(Stringname); publicUserselectByNumber(Stringname); publicintinsertUser(Useru); publicintupdateUser(Useru); publicUserselectShoppingById(Stringname);}(3)数据表映射类(User、Shop、list等)的实现。数据表映射类实际上就是在代码中对数据库表的映射,对于每个属性设置提供get和set方法。(4)业务逻辑类(UserService、ShopService、listService等)的实现。业务逻辑类的实现是根据自身应该实现的功能进行设计,利用DBUtil建立数据库连接,调用各个类功能实现类接口中的方法实现自身的功能。(5)数据表实现类(UserServiceImpl、ShopServiceImpl、listServiceImpl等)的实现。数据表实现类构造了实现数据表的具体函数,包括调用DBUtil类连接数据库的sql语句、增删改查语句等。具体功能类包括:(5)用户注册类(RegistServlet、RegistServletSuccess)的实现。实现RegistServlet类,需调用系统内置的request和response对象中的方法,获取用户在注册界面输入的信息,并对信息进行判定,判定成功后跳转至RegistServletSuccess类,调用接口函数将所得的数据存入数据库,若判定失败,则提示用户输入用户名已存在,用户注册失败,信息不存入数据库。部分核心代码如下:request.setCharacterEncoding("utf-8"); Stringu_id=request.getParameter("username"); response.setContentType("text/html;charset=UTF-8"); PrintWriterout=response.getWriter(); UserServiceregister=newUserServiceImpl(); booleansameId=register.isSameId(u_id);//true为无此ID if(sameId){//ID不存在,可以注册 out.print("1"); } else{ out.print("0"); }(6)用户登录类(LoginServlet、LoginServletSuccess)的实现。实现用户登录类与用户注册类相似,调用系统内置方法,获取用户的登录信息,并对获得的信息与数据库进行对比,如果数据库中存在用户信息和获取到的用户信息相同,则用户登陆成功,跳转至主页index.jsp界面,若数据库中不存在相同的信息,则用户登录失败,提示用户输入用户名或密码有误。部分核心代码如下:protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //TODOAuto-generatedmethodstub Stringu_id=request.getParameter("username"); HttpSessionsession=request.getSession(); session.setAttribute("u_id",u_id); request.getRequestDispatcher("realindex.jsp").forward(request,response);(7)商品选择类(SelectProductByName、SelectProductByType等)的实现。此类主要用与主页index.jsp和商品列表界面liebiao.jsp界面,功能是根据属性筛选符合条件的商品信息并显示。部分核心代码如下:protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //TODOAuto-generatedmethodstub response.setCharacterEncoding("UTF-8"); intType=Integer.parseInt(request.getParameter("type")); List<Product>resultlist=null; ProductServiceps=newProductServiceImpl(); resultlist=ps.SelectProductByType(Type); for(Productpr:resultlist){ Stringdescription=pr.getP_description(); description=description.substring(0,20); pr.setP_description(description); } request.setAttribute("resultlist",resultlist); request.getRequestDispatcher("liebiao.jsp").forward(request,response);(8)支付宝接口类(DBUtil)的实现。用户在进行支付时,,将订单金额传至Servlet,Servlet根据订单名称和订单总金额、订单时间生成订单号,初始化AlipayClient,并调用支付宝接口生成二维码。核心代码如下:publicstaticvoidlogResult(StringsWord){FileWriterwriter=null;try{writer=newFileWriter(log_path+"alipay_log_"+System.currentTimeMillis()+".txt");writer.write(sWord);}catch(Exceptione){e.printStackTrace();}finally{if(writer!=null){try{writer.close();}catch(IOExceptione){e.printStackTrace();}}}}系统功能模块实现系统功能的实现主要就是界面的编写和面向对象类的实现,在本小节中只做简略介绍,不再详细说明。用户的注册与登录功能实现用户可以在任意页面点击“注册”按钮进入注册页面。在用户填写表单时,需要判断用户名和手机号是否已经存在,若已存在则提示用户用户名或手机号已存在。在输入格式经过判定合法,即用户名和密码不为空,验证码输入正确后,点击“立即注册”按钮,提示“注册成功”并返回登录页面。登录功能与注册功能相似,要求用户名和密码不为空,且验证码输入正确,输入完毕后点击“立即登录”按钮,在服务器端进行用户名和密码验证。根据输入的用户名在数据库中查找相关记录,如果无法找到相符数据,提示用户名或密码错误;如果能匹配到一条记录,则判断用户名对应的密码是否相符,不相符,提示用户名或密码错误,反之跳转至主页面,登录成功。个人中心查看功能实现用户可以在任意界面点击“个人中心”按钮进入个人中心,并查看自己的个人信息。在跳转至个人中心界面时,需要根据session中的用户名,从数据库中获得用户的相关信息,然后显示在页面指定位置。同时用户可以在个人中心页面点击“编辑”按钮,就可以对自己的昵称、个性签名和爱好等进行修改,在修改界面点击“保存”后,个人中心页面将会更新。用户提交修改后的信息后,服务器端会使用UPDATE语句在数据库中更新指定用户的相关信息。然后又将页面转向至个人中心页面。用户添加地址时,使用ajax将地址信息发送给服务器,服务器对数据库的地址表进行插入操作,完成对地址的添加。支付功能的实现用户可以在商品详情界面点击“立即支付”按钮进行支付操作,平台会根据订单时间、订单名称和订单总金额生成支付宝可以识别的二维码,用户使用支付宝沙箱环境扫描二维码完成支付后,订单支付成功。商品检索功能实现商品检索功能分为两个部分,第一个部分是按照商品类型搜索商品,第二个部分是按照关键字搜索商品。按照商品类型搜索商品即主页上方的导航栏,点击导航栏的信息即可跳转至相关商品的列表界面。按照关键字搜索商品即在导航栏右侧的搜索框内输入用户想要的商品关键字,页面即可跳转至按照该关键字查找到的商品列表界面。
系统测试用户注册、登录的测试用户在进行注册时,需要填写用户名、两次密码、手机号,并验证随机生成的验证码。如果任一项输入出错,系统会给与提示。用户注册界面如图5.1。图5.1用户注册界面测试结果:若想注册成功,用户名输入需符合规范,两次密码输入均需符合规范且相同,手机号需合法,验证码需输入正确。测试如表5.1。表5.1注册功能测试输入用例预计结果实际结果原因分析用户名:盛赢;注册失败注册失败用户名输入不合法密码:;确认密码:;注册失败注册失败密码为空密码:123456;重复密码:123456789;注册失败注册失败两次密码不一致手机号:123456;注册失败注册失败手机号不合法用户名:2016240202;密码:123456;确认密码:123456;手机号验证码:vldb;注册成功注册成功输入符合规范用户在进行登录时,需填写用户名、密码和验证码,并可点击右上角立即注册跳转至注册界面。用户登录界面如图5.2。图5.2用户登录界面若想登陆成功,需用户在本平台进行过注册,且填写用户信息和验证码无误。测试结果如表5.2。表5.2登录功能测试输入用例预计结果实际结果原因分析用户名:盛赢;登录失败登录失败用户名不存在用户名:2016240202;密码:123;登录失败登录失败用户名或密码错误验证码:1234;登录失败登录失败验证码输入错误用户名:2016240202;密码:123456;验证码:rcjh;登录成功登录成功输入符合规范个人信息界面测试个人信息界面如图5.3。图5.3个人信息界面测试过程如表5.3;表5.3用户数据功能测试输入用例预计结果实际结果原因分析点击首页跳转至首页跳转至首页符合预期点击畅行旅途logo跳转至首页跳转至首页符合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 奥马冰箱2027届全球校园招聘考试备考试题及答案详解
- 2026年庆云县事业单位人员招聘笔试备考题库及答案解析
- 2026年五台县事业单位人员招聘笔试备考题库及答案解析
- 2026年舟曲县公务员招聘考试参考题库及答案解析
- 2026东莞人才人力资源服务有限公司招聘课时服务教师94人考试备考题库及答案详解
- 真空电子器件化学零件制造工岗后知识考核试卷含答案
- 信息通信网络动力机务员安全意识强化考核试卷含答案
- 汽车维修工创新方法模拟考核试卷含答案
- 碳酸锂蒸发工创新方法竞赛考核试卷含答案
- 加工中心操作工班组评比模拟考核试卷含答案
- 村级组织信访知识培训班课件
- 国家普通话水平测试试题及答案
- 丝印网板管理办法
- GB/T 45901-2025船舶与海上技术螺旋桨空化观测和船体压力测量的全尺寸试验方法
- GB/T 45681-2025铸钢件补焊通用技术规范
- 2025年云南省中考历史真题【含答案、解析】
- 房屋安全培训课件
- 四年级上册语文课文必背内容
- 患者隐私保护培训课件
- 50吨门式起重机拆除施工方案样本
- 合同签署确认
评论
0/150
提交评论