摘 要
目前,旅游业已成为全球经济中发展势头最强劲和规模最大的产业之一,互联网的兴起给旅游业带来了新的契机。旅游网站逐渐成为旅游信息管理的主要途径。因此,开发一个稳定的适用性好的旅游管理系统具有非常重要的意义。在对现有旅游查询网站的分析和比较的基础上,依循面向对象软件开发过程,设计出客户端基于Web浏览器,服务器端基于JSP和Servlet,数据源基于关系型数据库的三层框架,完成JSP页面设计、服务器端核心请求的处理以及对数据库的同步更新。以旅游管理系统的应用实例实现了这个方案。该系统可以实现游客分类查询路线信息.路线预定,在线选购物品和结账。系统管理员查询、修改、删除和添加交通和线路,产品信息。系统工作稳定、操作简单、维护方便。
关键词:旅游;安阳;管理系统
I
Abstract
At present , tourism is one of the most developing and the biggest large scale industry in the world. Internet brings tourism to a new turning point. Tourist information is managed mainly by tourism web site instead .As a result , it is very important to develop a flexible tourism management system. On the base of the analysis of the current tourism web sites, complied with the process of OOD, a three-layer system is designed, consisted of client based on web browser, server based on JSP and Servlet and data source based on relational database. We finish the design of the JSP pages, the core response to request from user and the synchronous update of the database, and develop a tourism management system to implement the design. The system can implement these functions as following: classified route information query for tourist, route reservation information for administrator, online shopping and purchase, and administrator can add, query, modify or delete the traffic、route and goods information. This system is stable, reliable and quite simple in operation .The maintenance is also convenient.
Key Words: Travel, AnYan ,Management System
II
目 录
1 引 言 ................................................................... 1 2 系统开发的关键技术 ....................................................... 2 2.1 系统的MVC结构 ....................................................... 2 2.2 系统的开发平台 ....................................................... 2 2.2.1 Myeclipse简介 .................................................... 2 2.2.2 Sql Server 2005简介 .............................................. 3 2.3 系统使用的技术 ....................................................... 4 2.3.1 JAVA语言 ......................................................... 4 2.3.2 JSP技术 .......................................................... 4 2.3.3 JavaScript技术 ................................................... 5 3 旅游管理系统需求分析 ..................................................... 6 3.1 系统需求分析 ......................................................... 6 3.1.1 游客管理模块 ..................................................... 6 3.1.2 购物车模块 ....................................................... 6 3.1.3 交通模块 ......................................................... 6 3.1.4 旅行社模块 ....................................................... 7 3.1.5 新闻模块 ......................................................... 7 3.1.6 当地特色模块 ..................................................... 7 3.2 系统性能指标 ......................................................... 7 4 系统设计 ................................................................. 8 4.1 系统设计总体要求 ..................................................... 8 4.2 系统模块设计 ......................................................... 8 4.1.1 数据库设计 ....................................................... 9 4.3 系统功能设计 ........................................................ 13 4.3.1 页面设计 ........................................................ 13 4.3.2 游客功能设计 .................................................... 13 4.3.3 系统管理员功能设计 .............................................. 13 4.3.4 旅游社管理设计 .................................................. 15 4.4 关键技术的实现 ...................................................... 15 4.4.1 汉字显示的实现 .................................................. 15 4.4.2 文件上传功能的实现 .............................................. 17 4.4.3 页面间参数传递的实现 ............................................ 18
III
4.4.4 数据库连接技术 .................................................. 19 5 系统的实现 .............................................................. 22 5.1 系统环境配置 ........................................................ 22 5.2 主要功能模块的实现 .................................................. 23 5.2.1 页面登陆的设计与实现 ............................................ 23 5.2.2 购物车功能 ...................................................... 24 5.2.3 安阳美景模块 .................................................... 26 6 测试 .................................................................... 28 6.1 测试的基本概念 ...................................................... 28 6.2 测试的任务与目的 .................................................... 28 6.2.1 测试的任务 ...................................................... 28 6.2.2 测试的目的 ...................................................... 28 6.3 系统测试的步骤 ...................................................... 29 6.4 本系统测试 .......................................................... 29 6.2.1 用户注册登陆模块测试 ............................................ 29 6.2.2 购物车模块测试 .................................................. 30 6.2.3 后台管理测试 .................................................... 31 参考文献 .................................................................. 32 致 谢 .................................................................... 33
IV
1 引 言
现代社会已经步入了信息社会的世界。随着互联网的广泛应用,计算机技术、计算机网络技术、数据库技术、管理技术的发展,对信息的处理和利用已经深入到各行各业,已经深入到人类生活中的各个方面。旅游是人们丰富多彩生活的重要组成部分之一,旅游业已经成为当今世界上发展势头最强劲的产业之一,它是集吃、住、行、游、购、娱六大要素于一身的综合性产业。随着旅游业的不断发展,各个地方的旅游竞争也越来越激烈,为了吸引游客,越来越多的地方注重发展本地的旅游网路平台,通过互联网这个开放的窗口展示着自己独特的魅力。
河南安阳是八大古都之一,著名历史学家郭沫若先生游览安阳时曾经这样赞叹,洹水安阳名不虚,三千年前是帝都。中原文化殷创始,观此胜于读古书。这样一座历史文化名城,中国优秀旅游城市,甲骨文和周易的故乡,红旗渠精神的诞生地。更应该让大家所了解。
本着这样的目的,结合本地旅游资源的实际情况和旅游发展的实际需求,开发了一个旅游管理系统,以此希望促进本地旅游业的发展。本系统将要依循面向对象软件开发过程,设计出客户端基于WEB浏览器,服务器端基于JSP和Servlet,数据源基于数据库的三层架构,采用MVC结构,完成JSP页面设计、服务器端请求的处理以及对数据库的同步更新。该系统可以实现游客分类查询安阳风景、路线信息、路线预定,在线选购物品和结账。系统管理员查询、修改、删除和添加交通、线路、风景和产品信息。系统工作稳定、操作简单、维护方便。
通过分析了一些国内 1>用户的注册与登录模块
2>旅游线路模块外的旅游网站和根据国内旅游者的习惯,设计了旅游管理系统的功能模块和业务流程。
3>当地旅游资源模块 4>票务交通模块 5>旅行社模块 6>当地特色模块
通过该旅游系统,实现了旅游资源网络化,可以更好的宣传本地旅游资源。
1
2 系统开发的关键技术
2.1 系统的MVC结构
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
通过这种方案,我们可以迅速地实现整个业务,其优势和特点如下:
Model(模型)层:由JavaBean来实现,将具体的业务封装在Bean内部,具备安全、高性能、可重用等优秀的特征。
View(视图)层:由JSP页和HTML标签组成。这一层次的主要特点是和客户交互,进行动态页面的展示。同时可以方便地进行客户端的个性化定制。根据每个客户的需求来展示不同内容的界面。
Controller(控制器)层:这一层是将View和Model的这两层进行最大限度分离的工具。可以由Servlet来实现,Servlet和JSP虽然同样都属于页面展示工具,但分属两层。主要在于JSP以脚本语言的形式存在, 它的主要优势是进行动态数据的Web展示,而Servlet是一个完整的Java程序,进行业务的调用和流程的处理,由于Servlet控制页面跳转速度很快,所以作为控制器可以最大限度发挥它的优点。
通过这种模型的建立,我们的应用系统具备了非常好的性能和可扩展性。将业务组件和展示页面进行分离,并通过Controller来描述调用关系,一方面可以提高效率,另一方面也可以增加系统扩充的能力,使我们的系统可以进行最快速度的业务扩展,以满足不同用户、不同阶段、各种各样的业务需求。 2.2 系统的开发平台 2.2.1 Myeclipse简介
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,还有Spring,SQL,Hibernate。MyEclipse 是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能强大,支持广泛,尤其是对各种开源产品的支持十分不错。
2
MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3, JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。
MyEclipse的实际价值来自其发布的大量的可视化开发工具和实用组件。如CCS/JS/HTML/XML的编辑器,帮助创建EJB和Struts项目的向导并产生项目的所有主要的组件如Action/Session Bean/Form等,此外还包含编辑Hibernate配置文件和执行SQL语句的工具。和.NET平台开发工具VS20003/VS2005以及以前的快速开发RAD工具Delphi,PowerBuilder等相比,Java/JSP应用开发的低效率一直是个缺陷。直到Eclipse和MyEclispe等出现后,情况才有所改观(尤其是MyEclispe等可视化开发插件),大大提高了开发效率。
新版本MyEclipse提供了AJAX、Struts Development、Hibernate Tools、Spring IDE Integration等功能。这些功能毫无疑问可以简化Web应用开发,并对Struts、Hibernate、Spring等开发框架的广泛应用起到了非常好的促进作用。此外MyEclipse还包含大量由其他组织开发的开源插件,Genuitec增强了这些插件的功能并且撰写了很多实用文档便于开发者学习。综上所述,MyEclipse插件对加速Eclipse的流行起到了很重要的作用,并大大简化了复杂Java/JSP应用的开发。 2.2.2 Sql Server 2005简介
SQL Server 2005是一个全面的数据库平台,使用集成的商业智能BI工具提供了企业级的数据管理。SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 2005数据引擎是本企业数据管理解决方案的核心。此外SQL Server 2005结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。
与Microsoft Visual Studio、Microsoft Office System以及新的开发工具包(包括Business Intelligence Development Studio)的紧密集成使SQL Server 2005与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005都可以为您提供创新的解决方案,帮助您从数据中更多地获益。
Microsoft仔细倾听了您的反馈,并对行业进行了认真研究,全世界的Microsoft研究团队共同努力,经过创造性思索才最终向您奉献出这一引入了上百种新增功能或改进功能的SQL Server 2005。这些功能将有助于您在以下三个主要方面提高业务:
3
1>企业数据管理
SQL Server 2005针对行业和分析应用程序提供了一种更安全可靠和更高效的数据平台。SQL Server的最新版本不仅是迄今为止SQL Server的最大发行版本,而且是最为可靠安全的版本。
2>开发人员生产效率
SQL Server 2005提供了一种端对端的开发环境,其中涵盖了多种新技术,可帮助开发人员大幅度提高生产效率。
3>商业智能
SQL Server 2005的综合分析、集成和数据迁移功能使各个企业无论采用何种基础平台都可以扩展其现有应用程序的价值。构建于SQL Server 2005的BI解决方案使所有员工可以及时获得关键信息,从而在更短的时间内制定更好的决策。 2.3 系统使用的技术 2.3.1 JAVA语言
Java语言诞生于20世纪90年代的初期,最初是以智能家电的芯片语言出现的。但是很快,人们发现了它有更广阔的用武之地,由于它适用于Internet环境,引起计算机界的广泛关注,迅速发展成计算机网络编程语言。
Java语言备受推崇,因其确实可称得上是新一代编程语言,具有众多优点,它简单、面向对象、可移植、与硬件无关、系统强健安全、具有很高的性能,并提供了分布性、多线程、动态性的支持。 2.3.2 JSP技术
JSP(Java Server Pages)是由Sun公司在java语言上开发出来的一种动态网页制作技术,JSP规范是Web服务器、应用服务器、交易系统、以及开发工具供应商间广泛合作的结果,使您可以将网页中的动态部分和静态的HTML相分离。
1>将内容的生成和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。
2>强调可重用的组件
绝大多数JSP页面信赖于可重用的、跨平台的组件(JavaBeans或者Enterprise- JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,井使得这些组件为更多的使用者或者客户团体所使用[6]。
4
3>采用标识简化页面开发
Web页面开发人员不会都是熟悉脚本语言的编程人员。JSP技术封装了许多功能,这些功能是在生成与JSP相关的XML标识的动态内容时所需要的。标准的JSP标识能够访问和实例化JavaBeans组件、设置或者检索组件属性、下载Applet,以及执行用其他方法更难于编码和耗时的功能。
4>健壮性与安全性
由于JSP页面的内置脚本语言是基于Java编程语言的,且都被编译为JavaServlet,它就具有Java技术的所有好处,包括健壮的存储管理和安全性[7]。
5>良好的移植性
作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,可以使用自己所选择的服务器和工具,而且更改工具或服务器并不影响当前的使用。
6>企业级的扩展性和性能
当与Java2平台,企业版(J2EE)和EnterpriseJavaBeans技术整合时,JSP页面将提供企业级的扩展性和性能,这企业中部对于虚拟署基于Web的应用是必需的。 2.3.3 JavaScript技术
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本设计语言,它可以镶嵌在HTML代码中的特殊类型代码,这些代码可以由浏览器解释执行,它使网页开发者可以更有效地控制页面。而且JavaScript是一种面向对象的语言,可以操控浏览器脚本对象模型所支持的各种标准对象,如当前窗口、浏览器本身信息、URL、HTML文档等等,并能对用户触发事件做出即时响应,诸如单击鼠标、表单操作等,而且这些都不需要客户机与服务器的交互通信,既为用户提供了更快速的操作,又减小了服务器端的负担,十分适合于编制交互网页和较小的编程任务。
JavaScript是一种解释性语言,它不需要对JavaScript程序进行预先编译而产生可执行的机器代码,只是在程序执行时才由一个内置于浏览器中的JavaScript解释器将源代码动态地处理成可执行代码。目前流行的浏览器都具有这种解释器。从Web发布角度来看,它的这种特性使它比编译性语言更加易于编程和使用。
由于JavaScript是由Java继承而来的,因此它是一种面向对象的程序设计语言。JavaScript中的对象有两个组成部分——状态和行为,或者说变量(属性)和函数(方法)。可以用JavaScript的对象来模拟现实生活中的各种实例,从而大大方便了程序的设计。利用对象的继承性,可以使很多精心设计的代码能够重新使用,从而减少了程序设计人员的重复工作量而节省了时间。
5
3 旅游管理系统需求分析
该系统作为旅游管理系统的web端实现.,其主要功能是方便游客对安阳的风土人情了解,特产购买和旅行线路的查询和预定,及特别提供单独的管理员权限以方便管理员对各个模块进行查添删改操作。另外为了实现商务价值而设立了旅行社管理模块,方便旅行社查看路线预定情况。 3.1 系统需求分析
为了方便游客和管理员及旅行社三方对该系统的操作和运用,现对该系统针对不同用户的需求做一个分析。 3.1.1 游客管理模块
为了方便信息的查询和对安阳旅游的了解,系统允许非注册用户浏览。游客可以查看到各个旅行社发布的旅游路线信息,上面有很详细的线路介绍,酒店预定的情况行程安排情况。另外可以浏览整个网站的一些安阳风情介绍,特产和特色小吃等等。但是考虑到一些功能涉及到一些基础信息,所以在其他功能如线路预定,购物车功能等需要游客先注册然后登陆系统才能使用。在设想时考虑到现在的网上购物已经成为现在一种潮流,所以在该系统上设计了购物车这个特别的模块,方便游客可以预购物品。 3.1.2 购物车模块
在这个购物车模块中主要实现一个物品的预购,即实现在线的查询和购买结帐。游客必须是注册登陆才能在安阳特产这个模块中进行购买和结帐,或者是查看购物车的功能。为了保障游客的购买需求能够准确的被管理员搜集,这里需要游客填写的是比较准确的联络信息和个人信息。 3.1.3 交通模块
旅游和交通如航班、火车是密切相连的,所以在这个网站上必须要有一个交通信息的发布和管理功能,以便游客的查询和了解。交通管理员可以登陆交通管理模块,确认航班,船,火车的预定情况,也可以通过管理修改和增加交通信息。游客可以浏览前台的交通信息,通过城市到城市,查询航班、火车班次交通的票务信息,了解航班的发出时间和到达时间,了解更为详细的信息。
6
3.1.4 旅行社模块
这个系统为了满足更多的旅行社在系统中发布旅游路线信息,特别设置了多个旅行社的管理方式,每个旅行社可以通过自己的ID和密码登陆后台,查看自己旅行社的路线预定信息。考虑到操作的简单,也为了避免操作的冲突,旅行社只有查看预定情况的权限,而不涉及旅游线路的管理功能。对于旅游线路的发布修改删除等功能,旅行社可以交由系统管理员来完成。 3.1.5 新闻模块
旅游新闻往往是吸引游客目光的一个模块,通过这个平台游客可以及时的了解一些相关有用的信息,例如:优惠信息、天气信息等等。所以本网站也需要设置一个新闻模块发布和管理的功能模块来发布一些当地的一些旅游信息,以方便游客的浏览。 3.1.6 当地特色模块
一个当地的旅游网站,最关键的一个功能就是展示当地的一些特色,通过自己的特色吸引游客的目光。一个旅游网站只有能够成功的展示当地的特色这个网站才能够说是成功的。所以本网站也需要设置一个功能模块来展示当地的特色。 3.2 系统性能指标
为实现上述需求,本系统采用JSP技术及web数据库技术构成基于web的旅游管理系统。
1>实用性
旅游管理系统的开发应将系统的实用性和实时性放在首要位置。系统的设计应最大限度发挥计算机的高速处理、海量存储能力。在软件设计中,以方便用户使用为标准,做到统一编码规则、统一界面风格。
2>可靠性
由于系统性质的要求,本系统的可靠性要求很高。系统在运行中要不发生或极少发生故障,在偶然事故及操作失误时,系统应具有较强的处理能力,而不应造成信息的丢失和破坏。
3>安全性
通过旅行社管理系统可以修改及删除旅游线路和介绍的信息,和一些游客的购物清单以及基本信息,因此对系统的安全性要求比较高,一方面要保证旅行社用户各项信息的安全,另一方面又要在非常情况下保证数据的丢失减少到最低限度。
7
4 系统设计
4.1 系统设计总体要求
系统设计是旅游管理系统开发过程的一个重要阶段,包括两个方面,首先是总体结构的设计,其次是具体功能模块的设计。其主要目的是为系统实现(如编程、调试、试运行等)制定蓝图。在系统设计阶段,主要任务就是在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方案。系统设计的原则为:
1>系统性。系统是作为统一整体而存在的,因此,在系统设计中,要从整个系统的角度进行考虑,系统的代码要统一,设计规范要标准,传递语言要尽可能一致,对系统的数据采集要做到数出一处、全局共享,使一次输入得到多次利用。
2>灵活性。为保持系统的长久生命力,要求系统具有很强的环境适应性。为此,系统应具有较好的开放性和结构的可变性。在系统设计中,应尽量采用模块化结构,提高各模块的独立性,尽可能减少模块间的数据藕合,使各子系统间的数据依赖减至最低限度。这样,既便于模块的修改,又便于增加新的内容,提高系统适应环境变化的能力。
3>可靠性。可靠性是指系统抵御外界干扰时的恢复能力。一个成功的管理系统必须具有较高的可靠性,如安全保密性、检错及纠错能力、抗病毒能力等。
4>经济性。经济性是指在满足系统需求的前提下,尽可能减少系统的开销。一方面,在硬件投资上不能盲目追求技术上的先进,而应以满足应用需要为前提;另一方面,系统设计应尽量避免不必要的复杂化,各模块应尽量简洁,以便缩短处理流程。
5>美观性。简洁的界面设计,在设计过程中,以人为本,用易于理解的图标,用有意义的标题,简明、一致、快捷并可靠的界面。 4.2 系统模块设计
河南省安阳市旅游管理系统是真正为用户考虑的网络平台,以满足客户实际需要而设计的。本系统参照真实的旅游网站所做,再结合本地旅游需求,这样可以更直接体现本网站的特点和价值所在。该系统属于B/S模式,可以通过前台的操作界面进行网站的访问和浏览,而后台是对数据表的操作对前台相关数据的管理,对数据库进行数据的更新和修改等操作,数据库可以单独存放在一个服务器上,而客户端的模块分别安装在相应的机器上。该系统包括如下五个主要模块:旅游信息管理、旅游线路、客户信息管理、旅行社管理、票务交通、各个模块主要功能如下:
8
1>旅游信息管理:管理员可以对景点、新闻的增加、查看、删除、修改等操作。通过这个模块可以让让游客可以更清楚更直观的进行对比和选择。
2>旅游线路:管理员对旅游线路进行管理,游客可以浏览旅游线路信息。 3>客户信息管理:主要包括客户注册与登录模块:客户可以方便的进行注册和登录,还可以对自己的信息进行修改,只有登录之后才可以进行旅行社的预订查看更多信息。
4>旅行社管理:管理员负责对旅行社的管理。 5>票务交通:管理员对票务信息进行管理。
图4-1系统功能图
4.1.1 数据库设计
数据库的设计与整个系统的设计是融合在一起的,要做到动态的查询和显示数据,就必须使用数据库。本系统是一个以数据处理为主的信息管理系统,因此数据库的设计在整个系统的设计中占有很大的比重。
整个系统的数据库由9个表组成,分别是user、lvyouxianlu、orders、fengjing、 news、anyangfengjing、product、product_order、jiaotong。
user表保存网站的用户基本信息,用户分为普通用户和系统管理员。user表包含7个字段:序列号,用户标识,用户类型,用户姓名,密码,联系电话,电子邮件。序列号是自增不重复流水号,作为user表的主键,同时也作为orders表和product_order的外键。用户标识是文本类型,是用户登录名称,不能重复。用户类型是枚举类型(super,normal),表示用户是系统管理员还是普通用户。密码是文本类型,用于用户登录。用户姓名,联系电话,电子邮件是用户的个人信息。
9
表4-1
user表
字段名称 ser id type name password Tel email 数据类型 自动编号 文本 文本 文本 文本 文本 文本 说明 序列号 用户标识 用户类型 用户姓名 用户密码 用户联系方式 用户电子邮件 lvyouxianlu表保存旅行社提供的各条旅游线路,包含了14个字段。Id是自动增长的流水号,是lvyouxianlu表的主键。lxs是外键,关联到旅行社表。其他字段是旅游线路的基本信息,包括线路名称,行程天数,出发地,标准价格,豪华价格,超豪华价格,具体行程安排,餐饮住宿条件,交通保险,导游门票,春节优惠价格和其他内容。具体行程安排中将多天的安排存放在一起,中间用“----”分隔开。
表4-2
lvyouxianlu表
字段名称 ser xlmc lxs xcts cfd bzd hhd chhd xcap cyzs jtbx dymp qtnr cjjg
数据类型 自动编号 文本 文本 文本 文本 文本 文本 文本 备注 文本 文本 文本 文本 文本 说明 序列号 线路名称 旅行社 行程天数 出发地 标准等 豪华等 超豪华等 行程安排(不同的日程的内容用 \"----\" 分隔) 餐饮住宿 交通保险 导游门票 其他内容 春节价格 10
orders表保存用户网上申请的旅游线路的信息
表4-3 orders表 字段名称 id date type who number tel no 数据类型 文本 文本 文本 文本 文本 文本 文本 说明 用户标识 订购日期 产品类型 客户姓名 产品数量 联系电话 用户身份证号 Fengjing表记录了安阳各地的主要风景,人文古迹的最新信息,并附有2张风景图片。Fengjing表包含了7个字段。
表4-4 Fengjing表 字段名称 id name pic1 pic2 数据类型 文本 文本 文本 文本 说明 序列号 风景名称 图片1 图片2 所属类别(因甲骨文而闻名于世,人与自然的结合,国家重点风景名胜区,国家森林公园) 文字描述(段落1) 文字描述(段落2) type 文本 Detial1 Detial2 备注 备注 news表存储近期旅游热点新闻。news表包含了4个字段。
表4-5
news表
字段名称 id name pic1 content 数据类型 文本 文本 文本 文本 11
说明 序列号 标题 图片 内容
anyangfengqing表包含5个字段。id是自增序列号,主键。name是新闻标题,detial1是新闻内容,pic1是新闻图片名称。安阳风情分4个类别,type是枚举类型:安阳美食,安阳文化,民族民俗,安阳珍奇。
表4-6
anyangfengqing表
字段名称 id name pic1 content 数据类型 文本 文本 文本 文本 说明 序列号 标题 图片 内容 product记录各种安阳特产的相关资料。product表有7个字段:id是数字主键,name是产品名称,content是产品描述,price是产品价格,danwei是产品计数单位,pic1是特产图样,from是产品产地。
表4-7 字段名称 id name content price danwei pic1 from product_order表存储用户的订单信息,有6个字段。name是外键,关联到user表,tel,addr,product和quantity是订单基本信息。
表4-8 product_order表 product表 数据类型 自动编号 文本 文本 文本 文本 文本 文本 说明 序列号 特产名称 产品说明 价格 单价 图样 产地 字段名称 id quatity name tel addr IDNumber 数据类型 文本 文本 文本 文本 文本 文本 说明 产品id 数量 客户姓名 联系电话 地址 身份证号 12
jiaotong表保存近期交通信息,包括飞机,火车,轮船3种交通工具的线路及时刻信息。
表4-9
jiaotong表
字段名称 from to type id time1 time2 price 4.3 系统功能设计 4.3.1 页面设计
数据类型 文本 文本 文本 文本 文本 文本 文本 说明 始发地 目的地 类型(飞机、火车、轮船) 号码(航班号、列车车次、轮船号) 出发时间 到达时间 票价 主页面是本网站的门户,它包含了各个模块的入口链接,部分热点模块的最新信息,用户注册,登陆,权限分配功能。
首页通往各个子模块的链接,使用http标签静态实现。如:
该模块为用户提供了安阳的旅游信息,并在此基础上,为注册会员提供在线订购特产,预定旅游线路,预定航班等功能。非注册用户可以上网查看辉县的旅游信息,用户能分类的了解到风景,风情,路线情况,交通信息,旅游新闻,等基本信息。为了避免累赘的工作和一些恶意的欺诈,而特别设计了注册与非注册两种用户权限。 4.3.3 系统管理员功能设计
管理员通过注册名被定义为super权限的用户名登陆到系统后可以进行除旅行社管理外的其他所有模块的管理操作。以票务交通模块为例,管理员登陆后,在票务交通模块可以看到左边有一个管理的标签,进入后可以进行这个模块的管理。管理员可以在这里进行对已有的交通信息修改和删除操作,也可以通过左边的增加按扭进行对交通信息增加。其他模块的维护方式与票务交通模块类似。通过后台维护模块,管理员能更直观
13
的进行操作,在对后台数据库进行任何操作后,都可以立即观察到效果,从而减少了错误发生的机率。管理员跟普通用户的区别就在于权限不同,即是基于该网站的身份验证和权限分配上。身份验证和权限分配实现的代码如下:
<%String id = (String) request.getParameter(\"userName\");
String password = (String) request.getParameter(\"password\");
try {
Statement stmt = dbConnection.getConnection().createStatement();
String sql1 = \"select * from user where id='\" + id
+ \"' and password='\" + password + \"'\";
ResultSet rs1 = stmt.executeQuery(sql1); if (rs1.next()) {
session.setAttribute(\"right\String name = rs1.getString(\"name\"); String type = rs1.getString(\"type\"); if(type!=null&&type.equals(\"super\")){ session.setAttribute(\"right\session.setAttribute(\"userName\session.setAttribute(\"password\} else{
session.setAttribute(\"userName\session.setAttribute(\"password\}
stmt.close();
response.sendRedirect(\"index.jsp\"); return;
}
out.print(\"登陆失败!请重新登陆\");
out.print(\"
[ 返回 ]\"); } catch (Exception e) {
out.println(\"数据库连接错误\" + e); } %>
各个模块的管理功能主要是对数据库的操作,在此就不再赘述。
14
4.3.4 旅游社管理设计
旅行社管理员通过各个旅行社自己在这个系统中的ID号和密码登陆后,可以查看预定本旅行社的旅游路线情况,在这里由于假设旅行社与系统供应商只存在着合作的关系,旅行社可以提交自己的旅游路线信息给系统管理员,只能由系统管理员来操作旅游路线信息,这样提高了信息的安全性和各个旅行社竞争的公平性。 4.4 关键技术的实现 4.4.1 汉字显示的实现
在JSP的开发过程中,英文字符的表示一般不会出现问题,可能出现的中文问题如下:
1>JSP页面无法正确显示中文,比如出现“?”或者乱码; 2>JSP页面无法正确接收来自上一个页面提交的中文表单;
3>JSP从数据库或者文件中读出来的中文都是乱码,写进去的中文也是乱码。 这是跟Java中对字符的处理方式有关系的。英文字符一般都是以一个字符来表示,编码方式主要有:
1>ASCII码,美国国家信息交换标准码,是7位编码;
2>ISO-8859-1码,是8位编码,它包含了ASCII码,在西欧比较通用,它是Linux系统的字符集,同时也是HTML的基础字符集。
中文字符成千上万,必须使用2个以上的字节来表示,不同的地区和系统都制定了各自的编码方式,这样就产生了很多种不同的编码方式。常用的汉字编码方式(字符集)有如下几种:
1>GB2312码,中华人民共和国国家标准汉字信息交换用编码,是16位编码,简称国标码;
2>GBK是对GB2312的扩展,包含GB2312的字符集; 3>BIG5码,是台湾地区采用的编码方式;
4>UNICODE码,是16位编码,它是一个标准,它的目标是明白的表现每种人类语言中的每种已知字符;
5>UTF-8码,是UNICODE的转换格式,是一种不等长的编码。
多种编码方式共存造成了汉字表示方式的不统一,也带来了很多麻烦。Java对于多语言的支持并不是很好,任何涉及Java的需要显示汉字的软件都会遇到汉字问题。既然如此,在使用Java处理中文字符时就必须注意编码问题。有以下几点要特别注意:
1>当一个Java程序在运行时,所有的内存中的字符串都是以UNICODE方式来表示的;
15
2>Java程序接受一个字符串时,程序将该字符串从源编码方式转换为UNICODE编码;
3>Java程序输出一个字符串时,程序要将该字符串从UNICODE编码转换为目标编码方式;
4>Java程序输出一个字符串时,程序要将该字符串从UNICODE编码转换为目标编码方式;
5>在任何一个传递字符串的地方都可能出现编码转换。
在编写涉及到中文的JSP页面时,要注意对编码方式的考虑。主要的解决办法是在JSP中进行编码转换。由于涉及到编码的环节很多,因此中文问题没有一个统一的解决方案,只能在出现问题的地方进行具体分析,采取适当措施。在海鲜酒楼管理系统中,汉字乱码主要分为两种情况。
1>中文表单提交字符串
当页面中的表单提交字符串时,首先把字符串按照当前页面的编码,转化成字节串。然后再将每个字节转化成“%XX”的格式提交到 Web 服务器。比如,一个编码为GB2312的页面,提交“中”这个字符串时,提交给服务器的内容为“%D6%D0”字节串的格式。在服务器端,Web 服务器把收到的“%D6%D0”字节串转化成[0xD6, 0xD0]UNICODE字符串,然后再根据 GB2312 编码规则得到“中”字。
然而实际上,在将“字节串”转化成“UNICODE 字符串”时,容易将“字节串”简单地作为单字节字符串,采用每“一个字节”就是“一个字符”的方法进行转化。而在非英文的环境中,应该将“字节串”作为ANSI字符串,采用适当的编码来得到UNICODE字符串,有可能“多个字节”才能得到“一个字符”。
在Tomcat服务器中,request.getParameter( )得到乱码时,常常是由于上述原因造成的。默认情况下,当提交“%D6%D0”给Tomcat服务器时,request.getParameter( )将返回[0x00D6, 0x00D0]两个UNICODE字符,而不是一个“中”字符。因此,我们需要使用bytes = string.getBytes (\"iso-8859-1\") 进行逆向操作,得到原始的字节串“%D6%D0”,再用string = new String(bytes, \"GB2312\") 重新得到正确的字符串“中”。
在本系统中,输出页面按照GB2312进行编码,通过<%@ page contentType =\"text/html; charset=gb2312\"%>实现该设置。在实现添加用户功能时,从表单中获取用户姓名等汉字信息后,要先用上述方法进行编码的转换,以得到正确的字符形式。
2>从数据库读取字符串
通过数据库客户端(JDBC)从数据库服务器中读取字符串时,客户端需要从服务器获知所使用的ANSI编码。当数据库服务器发送字节流给客户端时,客户端负责将字节流按照正确的编码转化成UNICODE字符串。
16
本系统中,数据库中的所有表均采用MyISAM类型、gb2312字符集、Conlation:gb2312_chinese_ci。这样保证了数据库中字符编码和网页中字符编码的统一,数据库中的汉字可以直接在网页中显示出来,网页中具有相同编码的汉字在数据库中也可以显示为汉字。 4.4.2 文件上传功能的实现
在新闻,安阳特产,民族风情模块中都有图片信息,数据库中保存的是图片文件所在的相对位置和名称信息。在管理员维护网站信息的时候,为了更便于操作,需要在向数据库增加或者修改信息的同时,把图片上传到服务器相应的位置。在JSP中,可以通过
标签上传图片。通过这种方式,文件以流的方式发送到服务器端。服务器通过将相应的流操作,将文件重组并保存。但是这种方式的问题是,在这个form里的其他非文件参数,用普通的方式不能够读取正确的参数值,而将得到一个null。在这个问题上作者花了大量的时间精力进行研究,发现其他参数同样被转化成流,对这些参数,也需要进行流处理,才能得到原来正确的参数值。类FileUtil实现了上述功能。public static HashMap upLoad(HttpServletRequest request, String subpath) { HashMap datamap = new HashMap();
try {
if (ServletFileUpload.isMultipartContent(request)) { DiskFileItemFactory dff = new DiskFileItemFactory();
dff.setRepository(newFile(\"d:/\")); sfu.setFileSizeMax(5000000);
FileItemIterator fii = sfu.getItemIterator(request); while (fii.hasNext()) {
FileItemStream fis = fii.next();
if (!fis.isFormField() && fis.getName().length() > 0) { String fileName = fis.getName().substring(
fis.getName().lastIndexOf(\"\\\\\"));
BufferedInputStream in = new BufferedInputStream(fis
.openStream());
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(new File(
17
dff.setSizeThreshold(1024000);
sfu.setSizeMax(10000000);
ServletFileUpload sfu = new ServletFileUpload(dff);
dbConnection.absolutePath + subpath+ \"/\" +
fileName)));
Streams.copy(in, out, true);
datamap.put(fis.getFieldName(),fileName.substring(1));
} else {
BufferedInputStream in = new
BufferedInputStream(fis.openStream());
//ByteArrayOutputStream bos = new
ByteArrayOutputStream();
byte[] buffer = new byte[in.available()];
in.read(buffer); String contents = new String(buffer, \"UTF-8\");
datamap.put(fis.getFieldName(),contents);
} } }
} catch (Exception e) { }
return datamap;
}
upLoad方法是FileUtil类实现multipart/form-data协议下文件与form参数上传的关键方法。HttpServletRequest request中存放了上传的文件流,String subpath表示不同模块的文件存放路径。代码中创建了一个HashMap datamap准本用于记录所有上传的form参数。然后在d:\\建立临时文件夹,设置上传文件大小,通过FileItemIterator fii分别处理上传文件和参数。如果遇到文件,就把输入流的内容保存到subpath路径下,同时将form输入标签参和文件名放入datamap中;如果遇到参数,就将输入流的内容读入到一个String content中,然后将标签名和content放到datamap中。最后返回datamap,调用upLoad的JSP就可以从datamap中取得form中的所有信息,实现文件与form参数同时上传。 4.4.3 页面间参数传递的实现
旅游管理系统的实现过程中,经常需要把上一个页面中的数据传给下一页面,下一个页面获取这些参数后,再做进一步的操作处理,这就需要用到页面间的参数传递技术。本系统参数传递大致如下面这种种情况。
JSP代码间的参数传递有两种方式:get和post。
18
在票务信息功能中,就多次用到了页面间的参数传递。 get
进入删改票务信息页面后,将显示所有交通票务信息,并在每条信息后设有“修改”和“删除”链接操作。单击“修改”链接,系统需要把admin_jiaotong.jsp页面中的票务信息的有关参数传给modify.jsp,再由modify.jsp获取这些参数后,显示在文本区域内以便用户修改。
在admin_jiaotong.jsp中传递参数的代码如下:
其中,用?表示要传给该文件的参数,由于要传给modify.jsp的参数不止一个,用&来连接多个参数。
在modify.jsp文件中,使用
String id = request.getParameter(\"id\"); String type = request.getParameter(\"type \"); 语句来获取上一文件传递的参数。 post
在piao.jsp中通过post方式把参数id和type传给piao_search.jsp。
在piao_search.jsp中通过下面的代码获得从上一个页面传过来的变量id的值。 String id=(String)request.getParameter(\"id\");
String type=(String)request.getParameter(\"type \");
Post方式,页面间的信息保存在form中,以字符流的形式传递,参数对用户是不可见的。而用get方式传递参数相对于post比较简单,但是参数的名称和值都会直接显示在用户浏览器中。在实际应用中应根据两种方式的特点和在安全性的要求,有选择的使用。
4.4.4 数据库连接技术
为了提高代码的可重用性,数据库连接采用JavaBean技术。利用JavaBean技术进行数据库访问的工作原理是将数据库基本的处理逻辑封装在JavaBean中,在JSP程序中通过调用JavaBean实现对数据库的访问。首先将Java编写的数据库连接和执行数据库基本操作的JavaBean程序进行编译,将编译后生成的*.class文件存放到系统的ClassPath路径下,然后通过JSP程序调用这个JavaBean就可以实现对数据库的访问。
19
通过引用JavaBean执行对数据库的连接和对数据库记录的各种处理操作,提高了代码的重用程度,大大简化了程序设计的复杂度,发挥了组件技术的特点,提高了程序设计的效率。
本系统使用JDBC技术连接数据库,JavaBean组件ConnectMysql.java封装了对数据库的连接,断开及对数据库中表的查询、添加、修改、删除等操作。连接数据库的实现主要包括以下几个方面:
1>注册数据库驱动程序 Class.forName(DBDriver); 2>创建数据库连接对象
conn = DriverManager.getConnection(ConnStr); stmt = conn.createStatement(); 3>建立数据库连接及定义数据查询 public ResultSet executeQuery(String sql) {try
{rs = stmt.executeQuery(sql); } catch(SQLException ex)
{ //异常处理} return rs; }
4>定义数据操作
public void executeUpdate(String sql) { rs = null;
try
{ stmt.executeUpdate(sql); catch(SQLException ex) }
util.dbConnection.java在做了简单封装。
dbConnectin的代码如下:
public class dbConnection {
private static Connection conn;
private static String dbdriver = \"sun.jdbc.odbc.JdbcOdbcDriver\";
private static String dburl = \"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=\";
private static boolean initinalized = false; public static String absolutePath=\"\";
public synchronized static void initinalize(ServletContext application) {
20
}
值得说明的是,在系统的实现中,对获得数据库连接的方式用类
if (!initinalized) {
absolutePath = application.getRealPath(\"/\"); dburl = dburl + absolutePath + \"db1.mdb\"; initinalized=true; }
}
public synchronized static Connection getConnection() throws SQLException,
ClassNotFoundException { if (conn == null) {
Class.forName(dbdriver);
conn = DriverManager.getConnection(dburl); }
return conn; } }
在工程所有使用数据库连接的位置,都用过调用dbConnection的getConnection()方法来获得连接,实现了一个简单的连接池。这样做带来的好处是,程序运行中只需要打开数据库连接一次,以后都使用这个连接对象,提高了效率和资源利用率;同时要将工程移植到其他数据库上的时候,只用把dbConnection的连接参数修改就可以实现。
21
5 系统的实现
5.1 系统环境配置
服务器端的最低配置是由建立站点所需要的软件来决定的,在最低配置的情况下,服务器的性能往往不尽人意,现在的硬件性能已经相当出色,而且价格也很便宜,因此通常应给服务器配置高性能硬件。本系统要求服务器端的配置如下:
1>硬件服务器端 (1)处理器:i5 (2)内存:256 MB (3)硬盘空间:80 GB (4)光驱:CD-ROM 48X (5)显卡:SVGA显示适配器 2>硬件客户端
因为客户端主要用于浏览和操作数据,所以对客户端的硬件要求不高,不过现在的电脑有很高的性价比,因此需要的配置应该高于下面的配置:
(1)处理器:InterPentium 166 MX或更高 (2)内存:32 MB (3)硬盘空间:1 GB (4)光驱:CD-ROM 48X (5)显卡:SVGA显示适配器 3>软件服务器端 (1)操作系统:Windows 7 (2)网络协议:TCP/IP (3)web服务器:Tomcat (4)数据库:Sql Server 2005
(5)浏览器:Internet Explore 5.0以上 4>软件客户端
(1)操作系统:Windows 7 (2)网络协议:TCP/IP (3)数据库:Sql Server 2005
(4)浏览器:Internet Explore 5.0以上
22
5.2 主要功能模块的实现
主页面的网址是:http://localhost:8080/lvyou/,打开页面如图所示:
图5-1 主页面
下面将按照图上所示介绍该系统主要的几个模块的功能。 5.2.1 页面登陆的设计与实现
已注册用户在访问本站,必须先登陆后访问。登陆时需输入用户名和密码,通过系统验证(包括用户名和密码的验证以及用户权限验证)成功后方可进行相关操作。
用户登录成功后可以修改个人资料和密码,查询、预订酒店信息,查询、预订线路信息,查询、预订票务信息,浏览网站图片,在线留言等。
要进入后台登录界面,只有当管理员输入正确的管理员帐号和管理员密码,才能进入系统后台进行操作,对系统的基本资料进行管理,以及对系统进行维护。
管理员登录界面:用于登录后台管理系统主页面,所有功能在此页面都可以进行相应的访问,其中主要包括了各种订单管理,旅游信息管理,用户信息管理,搜索管理,系统管理,留言信息管理等功能。
23
管理员登陆 输入帐号密码 判断是否管理员 进入系统后台 结束
图5-2 管理员登录程序流程图
5.2.2 购物车功能
该模块主要是方便用户本地土特产,路线订购,车票订购进行相关检索,并返回检索结果。用户可根据自己不同的需要,查找不同的信息内容,这样可以更加方便的为用户提供服务,系统根据用户选择的检索方式和输入的关键字进行相关检索,得到用户检索的信息。还可以根据自己的喜好将物品放入购物车中,在购物车中有游客想要购买的物品和物品的数量信息。在see_cart.jsp页面中还可以实现跳转继续购买和结帐功能。
1>模糊查询。按选择的类型和输入的关键字进行查询,就会检索出景点库中所有包括你输入字段的景点信息。如输入关键字“华”并选择“按景点名称”检索结果包括片名为“..华..”的景点信息。
2>精确查询。按选择的类型和输入的关键字进行查询,就会检索出景点库中与输入字段完全匹配的景点信息。
下图以安阳特产道路烧鸡为例进行信息检索,信息检索模块流程图如下:
24
主页面 用户注册 特产查询 景点/特产 景点查询 查询条件 查询条件 找到 找到 显示 显示 返回
图5-3用户查询程序流程图
下图是以查找安阳特产相关信息为例,当我选择查找,就可以找到地址在安阳道口烧鸡相关信息,这样的设计为用户提供了更多的方便,也节省了更多的时间。
图5-4 产品信息
25
当输入购买数量购买后,点击查看购物车查看自己选购的产品。
图5-5 购物车信息
5.2.3 安阳美景模块
在安阳美景模块中主要以介绍安阳主要的几个旅游胜地。这里实现了对八大古都之一安阳的风景的介绍和阐述。特别对于对安阳不了解的游客、以及远道而来的游客有介绍和指引的作用,可以通过这个模块对安阳更多的了解。
管理员登陆后对这个模块的操作比较简单,只是单一的增加信息和图片上传的功能。这里由于信息是比较传统且不考虑及时性所有并未涉及到删除功能。下面的语法显示了页面中安阳旅游景点之一的介绍殷墟的页面。
cellSpacing=0 cellPadding=3 width=\"90%\" border=0 align=\"left\"> <%ArrayList list_id = new ArrayList(); ArrayList list_name = new ArrayList(); ArrayList list_type = new ArrayList(); try { Statement statement = util.dbConnection.getConnection() .createStatement(); ResultSet rs = statement .executeQuery(\"select id,name,type from fengjing \"); //因甲骨文而闻名于世,人与自然的结合,国家重点风景名胜区,国家森林公园 while (rs.next()) { list_id.add(rs.getString(\"id\")); list_name.add(rs.getString(\"name\")); list_type.add(rs.getString(\"type\")); } statement.close(); } catch (Exception e) { e.printStackTrace(); } %>
26
因甲骨文而闻名于世
登陆后得到页面连接数据如图所示:
图5-6 殷墟介绍
27
6 测试
软件测试是系统开发过程中非常重要而漫长的阶段。其重要性表现在它是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析、系统设计和实施的最后复查。虽然在开发过程中,人们采用了许多保证系统的质量和可靠性的方法来分析、设计和实现系统,但免不了在工作中会犯错误,这样所开发的系统中就隐藏着许多错误和缺陷。如果不在系统正式运行之前的测试阶段进纠正,问题迟早会在运行期间暴露出来,这时要纠正错误就会付出更高代价,甚至造成生命和财产的重大损失。
经过需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段。然而,在测试之前的各阶段中都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失。目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段。 6.1 测试的基本概念
测试可以分为黑盒测试和白盒测试。
黑盒测试:也称为功能测试,指将软件看成黑盒子,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。根据系统分析说明书设计测试用例,通过输入和输出的特性检测试是否满足指定的功能。
白盒测试:也称为结构测试。指将软件看成透明的白盒,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。 6.2 测试的任务与目的 6.2.1 测试的任务
测试的任务就是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统的实用程度。 6.2.2 测试的目的
1>测试是“为了发现程序中的错误而执行程序的过程”,测试的目的就是在软件投入生产运行之前,尽可能多地发现软件中的错误。
2>目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。
28
6.3 系统测试的步骤
软件测试的主要步骤有单元测试、集成测试和确认测试。 1>单元测试(Unit Testing)
单元测试也称模块测试。通常单元测试可放在编码阶段,程序员在编写好一个模块后,总会对自己编写的模块进行测试,检查它是否实现了详细设计说明书中规定的模块功能和算法。单元测试主要发现编码和详细设计中产生的错误,通常采用白盒测试。
2>集成测试(Integration Testing)
集成测试也称组装测试,它是对由各模块组装而成的程序进行测试,主要检查模块间的接口和通信。集成测试主要发现设计阶段产生的错误,通常采用黑盒测试。
3>确认测试(Validation Testing)
确认测试的任务是检查软件的功能、性能及其他特征与用户的需求一致,它是以需求规格说明书(即需求规约)作为依据的测试。确认测试通常采用黑盒测试。
确认测试产生测试程序是否满足需求规格说明书所列的各项要求,然后要进行软件配置复查,特别是文档是否齐全,各方面的质量是否符合要求等。如果一个软件是为某个客户定制的,那么最后由客户来实施验收测试(acceptance testing),以便客户确认该软件是他所需要的。如果一个软件是作为产品被许多客户使用的话,那不可能为每个客户进行验收测试。
4>系统测试(system testing)是将软件、硬件、网络等系统的各个部分连接起来,对整个系统进行总的功能、性能等方面的测试。 6.4 本系统测试
6.2.1 用户注册登陆模块测试
测试一:对本系统管理员登录模块测试情况如表所示。 用户名称 aaaa 空 x b dr 用户密码 456 空 空 a dr123 权限 管理员 空 普通用户 管理员 管理员 测试结果 显示主界面 提示输入信息 密码错误 用户名错误 显示主界面 表6.1管理员登录模块测试用例表 29
因为管理员不可以自已注册,只能登陆后修改自已相关信息,所以当管理员直接进行登陆时密码不正确或者是用户名不存在时系统是否出现预期设定的操作提示。
预期效果:输入错误或者密码不一致时报错提示用户名或密码错误,都为空时提示请输入用户名或密码。
结果:都出现相应的报错提示。
结论:登陆时要输入正确的信息才能进行操作。 经过测试,用户登录模块测试成功。 测试二:普通客户权根测试
当客户想进行酒店、车票、线路的预订时就必须进行登陆,系统会根据用户名判断你是否登陆,如果没有登陆必须先登陆才可以进行预订。
预期效果:在非本站注册客户涉及到上述问题时,出现客户登陆和注册窗口,需要登陆或注册后方可进行操作。
结果:都出现客户登陆注册窗口。
结论:只有成为本站用户才可进行相应操作。 6.2.2 购物车模块测试
可以对安阳特产进行信息查看,选购。
图6-1 产品的信息
想要选购哪个产品,直接在该产品的后面点击详情,页面中就会出现该物品的所有详细信息,包括价格,口味,图片。当购物完毕时,就可以查看购物车看自己所买的特产,进行结账。如果你什么都没有选购,购物车就会显示为空。
预期效果:当你选购特产时,购物车中会显示你所购买的产品。
结果:显示你买的产品名称、数量和总价。结账时需要输入自己的准确信息和地址。
结论:任何时候都可以查看自己的购物情况。
30
图6-2 选购信息
6.2.3 后台管理测试
管理员能否进行对旅游信息的添加,删除和修改的功能,能否查看所有预订的信息。
预期效果:在管理员对信息进行相应操作后,前台能显示更新过的效果;在前台客户进行预订之后后台管理员能看见相应的客户预订资料。
结果:管理员添加景点信息后,前台显示增加了管理员添加的相应信息,删除和修改也是如此效果;客户预订了旅行线路后后台管理员可以查看。
结论:后台管理员操作和前台的显示连接正常。
31
参考文献
[1]王悠.基于用例的图书管理系统分析与设计[J].中国西部科技.2010年18期. [2]王珊,萨师炫.数据库系统概论(第五版)[M].北京:高等教育出版社,2009. [3]陆荣幸,郁洲.J2EE平台上MVC设计模式的研究与实现[J].计算机应用研究,2010. [4]孙卫琴,李洪称.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2008.
[5]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2009. [6]Marty Hall,Larry Brown著,赵学良译.Servlet与JSP核心编程(第4版)[M]. 北京:清华大学出版社,2009.
[7]张海藩.软件工程导论(第五版)[M].北京:清华大学出版社,2008.
[8]David Flanagan.jvavaScript权威指南(第六版)[M].南京:东南大学出版社,2011
[9]张华.用JSP开发基于B/S模式的图书信息管理系统[J].大众科技,2009. [10]Martin Bond.Dan Haywood Core Java[M].British,2009.
[11]Marty HallLarry Brown著,赵学良译.Servlet与JSP核心编程[M].北京:清华大学
出版社,2010.
[12]戴继周.基于Web的网络教学平台的设计与实现[D].长春:吉林大学计算机应用技术
专业, 2011.
[13]张辉,朱俊武.基于JSP的动态网络开发技术[J].电脑开发与应用,2010,8(5):20-25. [14]阎宏.Java与模式[M].电子工业出版社,2011.
[15]林寒超等.Servlet技术的研究[J].计算机技术与发展,2010,16(11):112-113. [16]张秋,余杨玥.基于用例的需求建模方法[J].计算机工程与设计,2009. [17]MattheMacDonal.管理信息系统[J].电子工业出版社,2010.
32
致 谢
历时将近三个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下解决了。尤其要感谢我的论文指导老师——李洁颖老师,她对我进行了无私的指导和帮助,不厌其烦的指导我进行论文的修改和改进,使我深受感动和鼓舞,老师认真负责的工作态度、严谨的治学风格,也使我深受启发;开发的同时,和同学们之间的相互探讨也使我获益匪浅,他们给了我莫大的支持和帮助。
感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我了很多有用的素材,还在论文的撰写和排版过程中提供热情的帮助。
由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!再次向给予过我帮助与关怀的所有朋友表示深深的感谢!
33
因篇幅问题不能全部显示,请点此查看更多更全内容