jsp旅游网站设计_第1页
jsp旅游网站设计_第2页
jsp旅游网站设计_第3页
jsp旅游网站设计_第4页
jsp旅游网站设计_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

PAGExx大学毕业设计(论文)旅游网站设计专业:计算机科学与技术班级:姓名:目录引言 31需求分析 61.1设计目标 61.2用户特点 71.3运行环境 71.4可行性研究 71.4.1技术可行性 71.4.2经济可行性 82技术选择 92.1数据库技术 92.2开发环境 102.3前台技术 102.4框架技术 113系统概要设计 153.1系统结构 153.1.1网站总体结构 153.1.2系统功能结构 153.1.3用户权限分系统功能结构 163.1.4管理员权限分系统功能结构 163.2系统用例 173.2.1普通用户用例 183.2.2会员用户用例 183.2.3系统管理员用例 193.3数据库设计 203.3.1数据库设计概述 203.3.2数据库需求分析 213.3.3数据库逻辑结构设计 223.3.4数据库物理结构设计 233.3.5数据库的完整性和安全性 294系统详细设计 304.1数据库连接 304.2系统具体实现 314.2.1用户权限分系统 314.2.2管理员权限分系统 435海军旅游网的测试 535.1系统测试 535.1.1单元测试 545.1.2集成测试和确认测试 545.1.3系统测试 545.2数据跟踪实例 545.2.1用户注册 545.2.2用户登录 545.3综合测试 55结论 56致谢 58参考文献 59附录源程序清单 60PAGE82沈阳大学毕业设计(论文)No.摘要随着旅游行业的不断发展,各家旅游行业之间的竞争日益激烈,旅游部门所需的信息量越来越大,业务操作中涉及的各种线路情况、客户情况以及旅游协作部门的情况越来越复杂多变。而除了一些个别地区已采用了旅游网站,一般通常是以原始的手工方式处理/交流信息。但是工作人员若仅靠手工方式处理大量资料,很可能带来出错率的增长以及大量资源的浪费和闲置等问题。因此,只有加强对旅游信息资源的整合、统一管理,才能使旅游部门更加合理、高效地运转。本文是根据旅游行业的这种现状,提出解决问题的一个可行性方法:采用现代化统一的计算机网络系统,实现了旅游管理的网络化,各类信息有序地进行存储,同时采用了权限认证的方式,只有经过了系统权限认证之后,方可进入系统主控界面,进行信息管理,在线预订等功能的使用。实现了各种业务系统的数据集成和信息集成,对旅行社各类信息、资源进行协同集中管理。利用JSP技术建立动态网站,实现旅游信息快速发布及接受游客的网上预订。关键字:旅游信息;网络;旅游网站AbstractWiththesteadygrowthoftourismindustry,traveldepartmentsarenowfacingtoughcompetitionbetweeneachother.Variousinformationateachstageoftheprocessarecomingup,suchasaccountspaymentstatus,clientrequestandfeedbackfromcontractingparties,andsoon.Andtheinformationvolumeisevergrowingandbecomingmoresophisticated.Mostdepartmentsusuallyhandletheseinformationmanuallyleavesbigroomforomissionanderrors,andquiteapartofresourcesmightnotbeutilizedefficiently.Therefore,acomputerizedsystemshallbedevelopedtobetterintegratetheinformationandutilizetheresources.ThissystemisallaboutsuchaTourismWeb.Informationofallkindsarestoredautomaticallyinaorderlyway,andusersgothroughanrecognitionprocedure,thoseapproveduserenterintothemainboardtomakereservationonline,manageinformationetc.TourismWebmadeitpossibletointegrateandutilizevarioustourisminformation/datatobetterusetheresourcesoftravelagency.Furthermore,tourisminformationcanbeknownquicklyandtouristscanbookthroughtheinternetbyusingJSPtoestablishaTourismweb.Keywords:informationoftourism;network;TourismWeb引言旅游业具有“无烟产业”和“永远的朝阳产业”的美称,它已经和石油业、汽车业并列为世界三大产业;根据统计,它每年产出4.7万亿美金的收入,直接或间接地为2亿700万人提供了就业机会,并支持着数以万计的企业的发展。改革开放以来,我国的旅游业有了非常迅速的发展,但是比较而言,我国国内旅游业发展的广度深度都远远不能适应经济发展和人民生活水平提高的需要。随着市场经济的发展和人民收入水平的进一步提高,人民对旅游消费的需求将进一步上升,国内旅游业在国民经济中的地位和作用越来越重要。但我国旅游产业仍然基础薄弱,管理手段滞后,信息化程度低,企业效益较差。旅游行政管理部门存在管理方式落后,缺乏信息化管理手段,信息沟通渠道不通畅等问题.,面对困难和挑战,我国旅游业必须转变观念,创新思维,以信息化建设为突破口和新手段,整合各种资源,从而实现整个行业的新跨越。加强旅游信息化建设,可以提高各级管理部门的工作效率和管理水平,精简办事程序,降低工作成本,加大宣传力度,加快信息传播速度,提高信息实效性;另一方面可以通过开展电子商务,满足游客的个性化需求,提高旅游服务质量,改变旅游企业传统经营模式,降低成本,增加效益,从而提高整个旅游产业素质,旅游实现信息化,将会进一步壮大旅游支柱产业,提升旅游产业整体信息化水平,优化产业结构和资源配置,完善产业链,进而带动众多相关产业发展,拉动内需,扩大就业,增加外汇收入,对经济发展起到积极的推动作用。现阶段,我国的一些旅游部门在信息化方面做的工作和其投入较少,对自身的发展起到了制约作用,可以通过建立旅游网站来宣传本地的风土人情,对信息进行网络化、信息化管理,提高自身竞争能力。目前有许多中型的旅游管理部门仍依靠原始的人工方式采用电子文档、电子表格等(例如Word、Excel,或者简单的Access)来对旅游信息进行管理,大部分旅行社也无自己的旅游网站,无法在现在这个网络时代接受客户的网上预订。随着业务的不断扩展,旅行社业务操作中涉及的各种收费情况、客户情况以及旅游线路情况越来越复杂,业务操作人员若仅靠手工方式处理处理大量资料,则遗漏信息的现象更容易发生,同时也可能带来出错率的增长以及大量资源的浪费和闲置等问题。因此,只有加强对旅游部门信息资源的整合、统一管理,才能使行业更加合理、高效地运转。现行的旅游信息管理模式的问题主要体现在如下几个方面:(1)各类旅游信息查询速度慢,工作强度大。旅游信息中牵涉到游客资料、导游信息、费用、线路、景点、酒店等等大量的资料,用人工方式进行整理汇总时,速度慢、工作繁琐、易出错。(2)各类资源之间调配难度大。由于信息面广,信息量大,因此要对其中某些资源进行统一管理、调配是需要花费大量的人工。(3)相当一部分资源缺少一定的保护,处于不安全的状态,许多信息容易泄露。(4)对于客户的服务要求反应慢。基于上面的原因,对于客户提出的服务要求,势必不能做出快捷的反应。(5)缺少服务质量反馈的统一管理。面对旅游市场的巨大潜力,旅游休闲类网站应积极行动,采取相应的发展对策。如改变营销观念,提高服务质量,加强交易的安全性等。旅游网站数量巨大,发展的趋势将是走向收购合并。从发展的角度来说,旅游网站必须作好三个结合:一是资金、资源、技术和市场的结合,尤其是网站资源与市场的结合还很不够;二是国际与国内的结合,借助国际资金和技术,启动国内市场,整合国内资源;三是电子网络和经营网络的结合,要向紧密化结合发展。未来的工作是使这三个方面结合起来,加大网络技术对旅游发展的影响,更加充分地体现旅游在网络文化中的优势。1需求分析1.1设计目标该系统主要建立一个完整的旅游网站,突出旅游特点,有美观的界面设计。其主要功能如下:普通用户:用户可以对各种旅游资源信息进行综合查询,如:按照多种符合条件对旅游线路信息进行查询、景点信息查询、旅馆信息查询、旅游团信息查询、旅游方式信息查询等。用户登录系统后,可以对旅游线路的检索结果进行选定,确定所属旅游团,然后对旅游团进行预订。预订步骤完成后,可以浏览预订结果,即所生成的订单。当然,也可以取消预订,即删除自己的订单。系统管理员:管理人员登录系统后,将各种烦琐的管理工作通过网站来管理,用最少的人力和物力提高管理水平,方便发布各种旅游信息,处理游客所遇到的各种问题,及时了解游客对旅游管理部门的意见,通过数据分析可以了解游客的基本情况和不同时期游客的变化情况,提前做出必要的准备工作。管理人员通过系统处理各个事务,使前台的操作方便简单,突出旅游特点,具有美观的界面设计,保证网站安全稳定的运行。管理员对信息的管理主要包括:景点信息管理、旅游线路信息管理、旅游团信息管理、旅馆信息管理、旅游团票务统计以及登录口令管理。管理员也可以根据各景点、各条旅游线路的游客关注度来动态添加旅游线路以及旅游团,从而满足不同游客对各地旅游景点以及旅游路线的需求。1.2用户特点旅游网站主要是用于旅游管理部门和旅游公司,对旅游信息进行发布和修改以及加强与游客之间的交流。本系统的用户十分广泛,对用户的技术要求是:熟悉计算机基本操作,熟悉Internet相关操作。1.3运行环境 硬件需求:奔腾3以上CPU,256M以上内存,10G以上剩余硬盘空间 操作系统:Windows98/2000/XP/Vista 运行环境:IE6.0或者以上版本 数据库:MySQL5.1 服务器:Tomcat6.0或者以上版本1.4可行性研究采用现代化统一的计算机信息网站系统,能够有效帮助旅游企业优化旅游行业TQC,使其在行业内处于优势地位,并相对长期地保持这种战略优势。1.4.1技术可行性技术上的可行性分析主要分析技术条件能否顺利完成开发工作,软、硬件能否满足需要。本系统采用JSP开发出友好美观的人机界面,便于用户理解、操作。数据库管理系统采用MySQL,它能够处理大量数据,同时保持数据的完整性、安全性。因此本系统的开发平台已成熟可行。硬件方面,在科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越便宜,因此硬件平台也能够满足本系统所需。1.4.2经济可行性计算机技术发展异常迅猛的根本原因在于计算机的应用促进了社会经济的发展,给社会带来了巨大经济效益。因此基于计算机系统的成本-效益分析是可行性研究的重要内容[5]。依照目前的发展现状,无论对从成本还是从效益角度,开发一个这样的旅游网站在经济上是可行的。2技术选择2.1数据库技术数据库是数据管理的最新技术,是计算机科学的重要分支。今天,信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或组织生存和发展的重要条件。因此,作为信息系统核心和基础的数据库技术得到越来越广泛的应用,从小型单项事务处理系统到大型信息系统,越来越多的应用领域采用数据库存储和处理他们的信息资源[2]。计算机领域中其他新兴技术的发展对数据库技术产生了重大影响。数据库技术和其他计算机技术的互相结合,互相深透,使数据库中新的技术内容层出不穷。数据库的许多概念,技术内容,应用领域,甚至某些原理都有了重大的发展和变化。建立和实现了一系列新型数据库系统,如分布式数据库系统,并行数据库系统,知识库系统,多媒体数据库系统等。它们共同构成了数据库系统大家族,使数据库技术不断地涌现新的研究方向。本系统选用MySQL5.1数据库,原因在于MySQL关系型数据库使用系统核心提供的多线程机制提供完全的多线程运行模式,并提供了面向C、C++、Java等编程语言的编程接口,支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作[2]。而且MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在数据量不是十分庞大的情况下,MySQL是管理内容最好的选择。2.2开发环境本系统采用当今流行的Java语言进行程序的开发。Java是面向对象的语言,因此它拥有着所有面向对象的特点:封装、继承、多态和抽象[7]。这使得Java的编程思想要比其他面向过程的语言更加符合人类正常的思维方式。而且,它是跨平台的,不受操作系统环境的约束。在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于Web浏览的人们来说简直不可容忍。他们迫切希望能在Web中看到一些交互式的内容,开发人员也极希望能够在Web上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力。SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于Web上,并且开发出了HotJava的第一个版本[3]。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的Web开发人员都心生感叹:噢,这正是我想要的!于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。另外,Java拥有着强大的开源项目,如三大框架:Struts、Hibernate和Spring框架。这些技术给Java带来了项目开发的强大技术支持[8]。而以上三种框架也在此毕业设计中有了一个比较清晰的体现。 开发工具:MyEclipse6.6 应用服务器:Tomcat6.0 数据库:MySQL5.12.3前台技术在本系统中,使用JSP作为前台的表示层,与用户进行交互。JSP(JavaServerPages)技术是由Sun公司发布的用于开发动态Web应用的一项技术。它以其简单易学、跨平台的特性,在众多动态Web应用程序设计语言中异军突起,在短短几年中已经形成了一套完整的规范,并广泛地应用于电子商务等各个领域中。在国内,JSP现在也得到了比较广泛的重视,得到了很好的发展,越来越多的动态网站开始采用JSP技术[4]。用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易[6]。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、BEA公司等,所以JSP迅速成为商业应用的服务器端语言。2.4框架技术在本系统中,我使用了当今比较流行的三大框架HSS,即Hibernate、Struts和Spring框架,并将它们整合使用。在此系统中,充分运用了MVC设计模式,其中,M层由Hibernate框架实现、V层由Struts框架实现、C层由Spring框架实现。首先在持久层(Model层),我认为选择Hibernate框架是再合适不过的了。Hibernate是一种Java语言下的对象关系映射解决方案。它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate的核心是ORM,即对象关系模型,这使得对数据库的操作更加符合Java语言的特点,开发人员只需通过对对象的操作就可完成对后台数据库的增删改查[10]。Hibernate的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来[1]。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。其次在视图层(View层),采用了Struts1.3技术。Struts框架的推出,不仅极大地简化了当时的J2EEWeb服务器端开发技术中的JSP和Servlet编程实现,而且也保证了应用系统是基于MVC架构而开发实现的;它不仅简化了J2EEWeb编程模型并提供了一种快速高效的构建Web应用程序的方法,同时它还产生了一个庞大的开源技术社区——Struts框架自从诞生之日起,就获得了ApacheJakarta开源社区的普遍关注。其优点在于:它是开源框架,Struts是Apache软件基金会资助的一个为开发基于MVC模式的Web应用而设计的一个开源框架。Struts框架中的各种组件都是标准的J2EEWeb组件:它利用Servlet、JavaBean和JSP、定制标签库等Web组件以及XML等方面的技术来实现构建Web应用系统[9]。它同时也是基于MVC模式的Web应用最经典的框架:作为一个日渐成熟的优秀框架技术(目前已经为Struts2.0版),Struts框架在构建基于MVC模式的J2EEWeb应用系统有许多技术方面的优势。因此,Struts框架是目前J2EE技术平台中最成熟、应用最广泛的开源MVCWeb框架,它为JavaWeb应用系统的开发者提供了一个结构清晰、功能丰富的开发平台;同时ApacheJakarta开源社区中有关Struts的技术资料文档非常丰富,这将方便读者的学习和应用。最后在控制层(Controller层),应用了Spring2.5技术。使用Spring框架的理由真是太多了,因为它存在太多的优点了,这也是我喜欢此框架的原因所在。其主要优点归纳如下:方便解耦,简化开发:通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。AOP编程的支持:通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。声明式事务的支持:在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。方便程序的测试:可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate)的直接支持。Spring对很多难用的JavaEEAPI(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些JavaEEAPI的使用难度大为降低。3系统概要设计3.1系统结构3.1.1网站总体结构本网站的开发过程中采用的是B/S(Browser/Server)结构,即浏览器/服务器。它以访问数据服务器为中心,HTTP协议为传输协议,客户端通过浏览器(Browser)访问Web服务器和数据库服务器。此结构与C/S(Client/Server)结构相比,存在着无需安装客户端软件的优势,这样对系统的软硬件要求不是很高,只需通过操作系统自带的浏览器便可访问服务器,十分方便快捷。其总体设计结构图如图1所示。图SEQ图\*ARABIC1网站总体设计结构图3.1.2系统功能结构该系统主要由两大分系统组成:用户权限分系统和管理员权限分系统。在用户权限分系统中,主要实现游客对旅游信息的查询以及旅游团的申报,当然,只有注册用户(会员)才可以预订旅游团。在管理员权限分系统中,主要实现对各种旅游资源信息进行全方面的管理和相应的统计功能。系统总体功能结构图如图2所示。图SEQ图\*ARABIC2总体功能结构图3.1.3用户权限分系统功能结构用户权限分系统主要由以下模块组成:用户登录注册模块、分区热门线路展示模块、各地区旅游线路、景点查询模块、优惠线路查询模块、旅游线路预订、退订模块、订单查看模块等。该分系统功能结构图如图3所示。图SEQ图\*ARABIC3用户权限分系统功能结构图3.1.4管理员权限分系统功能结构管理员权限子系统主要包括以下模块:景点管理模块、旅馆管理模块、旅游团管理模块、旅游线路管理模块以及票务统计模块和口令更改模块。该分系统功能结构图如图4所示。图SEQ图\*ARABIC4管理员权限分系统功能结构图3.2系统用例在此系统中,一共有三种用户:普通用户、会员用户和系统管理员。根据用户权限的不同,其所具有的操作也不尽相同。普通用户只能在系统中对各种旅游资源信息进行全方面的查询或者浏览;会员用户则可以预订旅游团,参加适合自己的旅游团并最终生成相应的订单,并对自己的订单进行管理,一个会员用户可以进行多人多次的预订操作;系统管理员则是最高权限拥有者,除了拥有其他用户的操作权限外,还可以对各种旅游资源信息和票务信息进行全面的管理,并实时对后台数据进行增删改查。3.2.1普通用户用例在此系统中,普通用户的权限是最低的,他所拥有的用例包括:国内旅游查询用例、亚洲旅游查询用例、欧洲旅游查询用例、非洲旅游查询用例、澳洲旅游查询用例、总体线路查询用例、优惠线路查询用例、推荐线路查询用例和用户注册用例。其用例图如图5所示。图SEQ图\*ARABIC5用户权限子系统用例图3.2.2会员用户用例在此系统中,会员用户的权限凌驾于普通用户的权限之上,他具有普通用户所具有的所有用例。除此之外,他所特有的用例包括:个人订单管理用例、旅游团预订与退订用例以及会员登录用例。其用例图如图6所示。图SEQ图\*ARABIC6会员用户用例图3.2.3系统管理员用例在此系统中,管理员权限主要用于对后台数据库的管理,当然他也具有会员用户以及普通用户所具有的所有权限。管理员权限所特有的用例包括:景点信息管理用例、旅馆信息管理用例、旅游线路信息管理用例、旅游团信息管理用例、票务统计用例以及口令更改用例。其用例图如图7所示。图SEQ图\*ARABIC7系统管理员用例图3.3数据库设计3.3.1数据库设计概述数据库是数据管理的最新技术。十多年来数据库管理系统已从专用的应用程序发展成为通用的系统软件。由于数据库具有数据结构化,最低冗余度,较高的程序与数据独立性,易于扩充,易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。因此不仅大型计算机及中小型计算机,甚至微型机都配有数据库管理系统。数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用性和相容性,提高了决策的可靠性。目前,数据库已经成为现代信息系统不可分割的重要组成部分。数据库技术也是计算机领域中发展最快的技术之一。数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。数据库及其应用的性能都建立在良好的数据库设计的基础之上,数据库的数据是一切操作的基础,如果数据库设计不好,那么其它一切用于提高数据库性能的方法收效都是有限的。数据库设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。设计数据库必须遵循一定的规则,在关系型数据库中,这种规则就是范式,范式是符合某一种级别的关系模式的集合。一般人们设计数据库遵循第三范式。即数据库表中不包含已在其他表中包含的非主关键字信息。采用范式减少了数据冗余,节约了存储空间,同时加快了增、删、改的速度。3.3.2数据库需求分析该系统中包含了十分全面的旅游资源信息,供游客进行浏览与查询。根据各类旅游信息的总结与归纳,本系统中所包含的信息为:用户信息、旅客信息、申报人信息、导游信息、出发地信息、景点信息、旅馆信息、旅游线路信息、旅游方式信息、旅游团信息、团类型信息以及折扣信息。可将这些信息抽象为下列系统所需要的数据项和数据结构:(1)用户信息(用户编号,用户名,性别,出生日期,联系方式,电子邮件,登录密码,权限,姓名,宅电)(2)旅客信息(旅客编号,姓名,性别,联系方式,身份证号)(3)申报人信息(申报人编号,姓名,性别,联系方式,成人数量,儿童数量,电子邮件,总价格)(4)导游信息(导游编号,导游姓名,联系方式,状态)(5)出发地信息(出发地编号,出发地名称,所在省)(6)景点信息(景点编号,景点名称,所在国家,所属洲,景点描述,关注度,相关图片)(7)旅馆信息(旅馆编号,旅馆名称,联系人,联系方式,价格,星级)(8)旅游线路信息(线路编号,线路名称,旅游天数,关注度,所在州,参考价格,相关图片)(9)旅游方式信息(编号,交通工具,所属公司)(10)旅游团信息(团编号,联系人,联系方式,承载人数,出发日期,已参加人数,价格)(11)团类型信息(类型编号,类型名称,类型描述)(12)折扣信息(折扣编号,折扣方式)3.3.3数据库逻辑结构设计概念结构设计是数据库设计的核心。概念结构独立于数据库的逻辑结构,也独立与所使用的具体的数据库管理系统。概念模型(E-R模型)的组成元素有:实体、属性、联系,E-R模型用E-R图表示。实体是用户工作环境中所涉及的事务,属性是对实体特征的描述。(1)模型中的实体相当于一个实体集、一个表。实体用矩形框表示,实体名称标注在矩形框内。用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型。(2)属性是实体的性质。用椭圆框表示,与实体之间用一条线相连,表的主码是关键属性。(3)各子系统模块中主键相同的字段之间存在着相互关联的关系。(4)在程序中实现对他们的完整性和一致性控制。E-R模型的组成元素有:实体、属性、联系。E-R模型用E-R图来表示。实体是用户工作环境中所涉及的事物,属性是对实体特征的描述。本系统所有实体所组成的E-R图如图8所示。图SEQ图\*ARABIC8系统实体E-R图3.3.4数据库物理结构设计根据上面E-R图中的实体以及实体间的关联,得出了十三张数据库表,这些表将存放在travel数据库中。下面是各个表的物理结构:用户信息表:该表中的字段为用户编号、用户名、性别、出生日期、联系方式、电子邮件、登录密码、权限、姓名以及宅电,其表结构如表1所示。表SEQ表\*ARABIC1用户信息表字段名称数据类型Null主/外键描述userIDINTEGERN主键用户编号UsernameVARCHAR(20)N用户名SexVARCHAR(2)N性别BirthdayDATEY出生日期TelVARCHAR(11)N联系方式EmailVARCHAR(20)N电子邮件PasswordVARCHAR(20)N登录密码RightsINTEGERN权限NameVARCHAR(45)Y姓名PhoneVARCHAR(45)Y宅电旅客信息表:该表中的字段为旅客编号、姓名、性别、联系方式、身份证号以及申报人编号,其中,申报人编号为该表与申报人信息表所建立的外键。其表结构如表2所示。表SEQ表\*ARABIC2旅客信息表字段名称数据类型Null主/外键描述IDINTEGERN主键旅客编号NameVARCHAR(20)N姓名SexVARCHAR(2)N性别TelVARCHAR(11)Y联系方式cardIDVARCHAR(18)Y身份证号teamuserIDINTEGERN外键申报人编号申报人信息表:该表中的字段为申报人编号、姓名、性别、联系方式、成人数量、儿童数量、电子邮件、总价格、旅游团编号以及用户编号。其中,旅游团编号为该表与旅游团信息表所建立的外键,用户编号则是该表与用户信息表所建立的外键。其表结构如表3所示。表SEQ表\*ARABIC3申报人信息表字段名称数据类型Null主/外键描述IDINTEGERN主键申报人编号NameVARCHAR(20)N姓名SexVARCHAR(2)N性别TelVARCHAR(11)N联系方式MannumINTEGERN成人数量ChildnumINTEGERN儿童数量EmailVARCHAR(45)N电子邮件PriceDOUBLEN总价格teamIDINTEGERN外键旅游团编号userIDINTEGERN外键用户编号导游信息表:该表中的字段为导游编号、导游姓名、联系方式以及状态。其中,状态字段标识该导游是否已被规划到相应的旅游团中。其表结构如表4所示。表SEQ表\*ARABIC4导游信息表字段名称数据类型Null主/外键描述IDINTEGERN主键导游编号NameVARCHAR(20)N导游姓名TelVARCHAR(11)N联系方式stateINTEGERN状态出发地信息表:该表中的字段为出发地编号、出发地名称以及所在省份。其表结构如表5所示。表SEQ表\*ARABIC5出发地信息表字段名称数据类型Null主/外键描述IDINTEGERN主键出发地编号NameVARCHAR(20)N出发地名称PrivinceVARCHAR(20)N所在省景点信息表:该表中的字段为景点编号、景点名称、所在国家、所属洲、景点描述、关注度以及相关图片。其中,其关注度字段会随着报名人数的增加而增加,相关图片字段所存储的是该景点的象征性图片的所在路径。其表结构如表6所示。表SEQ表\*ARABIC6景点信息表字段名称数据类型Null主/外键描述IDINTEGERN主键景点编号NameVARCHAR(20)N景点名称CountryVARCHAR(20)N所在国家StateVARCHAR(20)N所在洲DescriptionVARCHAR(45)N景点描述HotINTEGERN关注度ImgVARCHAR(200)N相关图片旅馆信息表:该表中的字段为旅馆编号、旅馆名称、联系人、联系方式、价格、星级和景点编号。其中,景点编号字段为该表与景点信息表所建立的外键。其表结构如表7所示。表SEQ表\*ARABIC7旅馆信息表字段名称数据类型Null主/外键描述IDINTEGERN主键旅馆编号NameVARCHAR(20)N旅馆名称BossVARCHAR(20)N联系人TelVARCHAR(11)N联系方式PriceDOUBLEN价格LevelVARCHAR(20)N星级viewIDINTEGERN外键景点编号旅游线路信息表:该表中的字段为线路编号、线路名称、旅游天数、关注度、所在州、参考价格、相关图片、旅游方式编号、出发地编号以及折扣编号。其中,关注度字段会随着选择该路线的游客数量的增加而增加;相关图片字段将保存该路线的象征性图片的所在路径。旅游方式编号字段为该表与旅游方式信息表所建立的外键;出发地编号为该表与出发地信息表所建立的外键;折扣编号为该表与折扣信息表所建立的外键。其表结构如表8所示。表SEQ表\*ARABIC8旅游线路信息表字段名称数据类型Null主/外键描述IdINTEGERN主键线路编号NameVARCHAR(200)N线路名称EndtimeINTEGERN旅游天数HotINTEGERN关注度StateVARCHAR(45)N所在洲PriceDOUBLEN参考价格ImgVARCHAR(200)N相关图片trafficIDINTEGERN外键旅游方式编号sendplaceIDINTEGERN外键出发地编号discountedINTEGERN外键折扣编号旅游方式信息表:该表中的字段为旅游方式编号、交通类型以及所属公司。其表结构如表9所示。表SEQ表\*ARABIC9旅游方式信息表字段名称数据类型Null主/外键描述IDINTEGERN主键旅游工具编号TypeVARCHAR(20)N交通类型CompanyVARCHAR(20)N所属公司旅游团信息表:该表中的字段为旅游团编号、联系人、联系方式、承载人数、出发日期、已参加人数、价格、线路编号、导游编号、旅馆编号以及类型编号。其中,线路编号为该表与旅游线路信息表所建立的外键;导游编号为该表与导游信息表所建立的外键;旅馆编号为该表与旅馆信息表所建立的外键;类型编号为该表与团类型信息表所建立的外键。其表结构如表10所示。表SEQ表\*ARABIC10旅游团信息表字段名称数据类型Null主/外键描述IDINTEGERN主键旅游团编号BossVARCHAR(20)N联系人TelVARCHAR(11)N联系方式TotalINTEGERN承载人数SendtimeDATEN出发日期NumINTEGERN已参加人数PriceDOUBLEN价格trafficlineIDINTEGERN外键线路编号guideIDINTEGERN外键导游编号hotelIDINTEGERN外键旅馆编号teamtypeIDINTEGERN外键类型编号团类型信息表:该表中的字段为旅游团类型编号、旅游团类型以及类型描述。其表结构如表11所示。表SEQ表\*ARABIC11团类型信息表字段名称数据类型Null主/外键描述IDINTEGERN主键旅游团类型编号typeVARCHAR(45)N旅游团类型DescriptionVARCHAR(45)N类型描述折扣信息表:该表中的字段为折扣编号以及折扣方式。其表结构如表12所示。表SEQ表\*ARABIC12折扣信息表字段名称数据类型Null主/外键描述IDINTEGERN主键折扣编号DiscountVARCHAR(45)N折扣方式景点线路信息表:该表中的字段为景点线路编号、线路编号以及景点编号。此表为景点信息表与旅游线路信息表因存在多对多联系而派生出来的中间表。其中,线路编号为该表与旅游线路信息表所建立的外键;景点编号为该表与景点信息表所建立的外键。其表结构如表13所示。表SEQ表\*ARABIC13景点路线信息表字段名称数据类型Null主/外键描述IDINTEGERN主键旅程编号trafficlineIDINTEGERN外键线路编号viewIDINTEGERN外键景点编号3.3.5数据库的完整性和安全性数据库的完整性是指数据的正确性和相容性。数据库管理系统(DBMS)用一定的机制来检查数据库中的数据是否满足规定的条件——完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中。本系统中定义了表与表之间的联系及表中各字段属性约束有助于实现有助于完整性。数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。在数据库系统中,大量的数据集中存放,而且为许多用户直接共享,是宝贵的信息资源,系统的安全保护措施就显得更为重要,它可以保护数据库防止恶意的破坏和非法的存取。在系统中,用户通过浏览器打开本站首页后,必须经过注册登录,方可对本站景点进行浏览、查看、检索等操作。用户注册的用户名是唯一的,密码通过加密。在用户登录,必须输入用户名和密码,并通过数据库的验证,同时对用户的权限进行验证,防止非法用户和未授权用户对本站进行非法访问和操作,保证本站的安全。4系统详细设计4.1数据库连接数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。出于对以上问题的考虑,我才使用了数据库连接池。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。我将数据库连接池的相关配置参数交给Spring配置文件(applicationContext.xml)进行统一的管理,其数据源设置的相关代码如下:<beanid="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <!--指定连接数据库的驱动--> <propertyname="driverClass"value="com.mysql.jdbc.Driver"/> <!--指定连接数据库的URL--> <propertyname="jdbcUrl"value="jdbc:mysql://localhost/travel"/> <!--指定连接数据库的用户名--> <propertyname="user"value="root"/> <!--指定连接数据库的密码--> <propertyname="password"value="mysql"/> <!--指定连接数据库连接池的最大连接数--> <propertyname="maxPoolSize"value="40"/> <!--指定连接数据库连接池的最小连接数--> <propertyname="minPoolSize"value="1"/> <!--指定连接数据库连接池的初始化连接数--> <propertyname="initialPoolSize"value="1"/> <!--指定连接数据库连接池的连接的最大空闲时间--> <propertyname="maxIdleTime"value="20"/></bean>4.2系统具体实现4.2.1用户权限分系统在此系统中,共有六个功能,它们分别是用户登录注册功能、分区热门线路展示功能、各地区旅游线路景点查询功能、优惠线路查询功能、综合线路查询功能、旅游线路预订模块和订单管理功能。其中,查询功能是不需要注册便可以使用的;但是,线路预订和订单管理则只有会员用户才拥有操作权限。当然,可以通过注册来成为网站的会员。(1)用户登录注册功能在此功能中,会员用户可以通过登录系统来获取相关权限,从而进行普通用户无法进行的操作,比如预订旅游团和订单管理。对于非会员用户,可以通过注册个人信息来成为本网站的会员。用户只需在首页选择“注册”按钮来进入注册用户页面,在页面中输入正确合理的个人信息便可以完成注册操作。注册页面如图9所示。图SEQ图\*ARABIC9注册页面其部分代码如下:Useruser=newUser();user.setUsername(username);user.setSex(sex);user.setTel(tel);user.setEmail(email);user.setPassword(password);user.setRights(0);user.setName(name);user.setPhone(phone);user.setBirthday(birthday);if(mgr.saveUser(user)){ returnmapping.findForward("registersuccess");}else{ request.setAttribute("mes","注册失败");}(2)分区热门线路展示功能当用户进入网站首页时,网站会自动展示出各个分区的排列在前五名的最热门旅游线路。其中,会将首名热门线路附上该线路标志性图片。并且会给出这些线路的线路名称、出发地点与参考价格。如果鼠标移动到线路名称正上方,页面会立即弹出关于该条旅游线路的所有旅游团信息,其中包括旅游团的出发时间以及实际价格信息。在此功能中,分区热门线路包括欧洲线路、美洲线路、澳洲线路、亚洲线路、非洲线路以及国内线路。其部分页面如图10所示。图SEQ图\*ARABIC10分区热门线路页面其部分代码如下:List<Sendplace>sendPlaces=mgrsp.searchAll();session.setAttribute("sendplace",sendPlaces);List<Trafficline>trafficlines=mgrtl.searchByHotLimit(0,20,"");session.setAttribute("hottrafficline",trafficlines);List<Trafficline>europetls=mgrtl.searchByHotLimit(0,5,"欧洲");request.setAttribute("europetl",europetls.get(0));europetls.remove(0);request.setAttribute("europetls",europetls);List<Trafficline>americatls=mgrtl.searchByHotLimit(0,5,"美洲");request.setAttribute("americatl",americatls.get(0));americatls.remove(0);request.setAttribute("americatls",americatls);(3)各地区旅游线路景点查询功能在首页中,用户可以根据页面导航中的超链接选择不同地区的旅游线路、景点查询功能。其导航栏如图11所示。图SEQ图\*ARABIC11页面导航栏这些地区包括国内旅游查询、亚洲旅游查询、欧洲旅游查询、美洲旅游查询、非洲旅游查询和澳洲旅游查询。当进入某一个地区的旅游查询页面时,系统会自动以图文方式列出该地区的推荐线路列表、热门景点以及热门旅游国家;并以表格的形式列出该地区的所有线路列表,而且在网页的右侧附有以出发地与目的地作为查询条件的当前地区线路查询功能供用户使用。其中,澳洲旅游查询页面如图12所示。图SEQ图\*ARABIC12澳洲旅游查询页面其部分代码如下:request.setAttribute("chinatrafficlines",mgr.searchByState("澳洲"));request.setAttribute("hotchinatrafficline",mgr.searchByHotLimitState(0,6,"澳洲",2));request.setAttribute("views",mgrv.searchByState("澳洲"));request.setAttribute("hotviews",mgrv.getHotViews(2,10,"澳洲"));returnmapping.findForward("australiatravel");(4)优惠线路查询功能在页面导航栏中,单击优惠线路超链接便可以进入优惠线路查询页面。在此页面中,系统会自动列出所有优惠旅游线路,并在后面的查看并预订超链接中给出折扣的描述。在此页面的左侧,罗列的是本网站前十大热门旅游线路。其页面如图13所示。图SEQ图\*ARABIC13优惠路线查询页面其部分代码如下所示:List<Trafficline>hottrafficlines=mgr.searchHotTrafficlineTen(10);List<Trafficline>distrafficlines=mgr.searchByDiscount();request.setAttribute("hottrafficlines",hottrafficlines);request.setAttribute("distrafficlines",distrafficlines);returnmapping.findForward("showdiscounttl");(5)综合线路查询功能在登录网站首页后,可以按照一些符合条件对本网站内所有的旅游线路进行查询。这些查询条件包括:出发地、目的地所在州、国家、所属景点、线路价格范围以及线路名称。此处使用了Ajax技术实现了表单联动,使得存在关联的查询条件之间进行动态显示。此处查询功能的部分页面如图14所示。图SEQ图\*ARABIC14综合线路查询页面其实,此处只是综合线路查询功能的入口处,当选择并输入查询条件后,单击“查询”按钮才会真正进入该功能的相关网页。此网页总共有两种数据信息,第一种便是按照刚刚输入的条件得出的查询结果,第二种数据是本网站推荐的前20大最受欢迎的旅游线路。该网页的部分页面如图15所示。图SEQ图\*ARABIC15综合查询页面其部分代码如下:publicList<Trafficline>searchBySendplace(Integersendplace,Stringname,Stringstate){ Queryquery=session.createQuery("fromTrafficlinetlwheretl.sendplace=?andlike?andtl.state like?andtl.teams.size>0"); query.setInteger(0,sendplace); query.setString(1,"%"+name+"%"); query.setString(2,"%"+state+"%"); List<Trafficline>trafficlines=query.list(); returntrafficlines;}(6)旅游线路预订功能此功能主要是提供给会员旅游线路的预订功能。如果会员已经凭借自己的用户名和密码登录该系统了,便可以直接进行旅游线路的预订操作页面。若在非登录的状态下进行旅游线路的预订操作,则必须要通过网站的身份校验。此时,当用户单击要预订的旅游线路时,会弹出身份校验页面,如图16所示。图SEQ图\*ARABIC16身份验证界面其部分代码如下所示:publicUsersearchUserByUsernamePassword(Stringusername,Stringpassword){ //TODOAuto-generatedmethodstub Sessionsession=this.getSession(); Queryquery=session.createQuery("fromUseruwhereu.usernamelike?andpasswordlike?"); query.setString(0,username); query.setString(1,password); Useruser=(User)query.setMaxResults(1).uniqueResult(); returnuser;}通过身份验证后,便会进入出团计划页面。在此页面中,可以获得关于所选路线的详细信息,包括该路线的名称、所经过的所有景点(线路介绍)、费用包含和这条线路上的所有人数未满的旅游团的详细信息。用户可以根据自身的情况选择适合自己的旅游团,并填写成人数量以及儿童数量(2-12岁),其中,对于儿童可有八折优惠。其部分页面如图17所示。图SEQ图\*ARABIC17出团计划页面其部分代码如下所示:Teamuserteamuser=newTeamuser();teamuser.setMannum(mannum);teamuser.setChildnum(childnum);Teamteam=mgr.searchTeamByID(teamID);if(team.getNum()+mannum+childnum>team.getTotal()){ request.setAttribute("team","team"); returnmapping.getInputForward();}teamuser.setTeam(team);session.setAttribute("teamuser",teamuser);用户需要填写完整的信息,如果信息填写有误,会出现相应的错误提示。单击“下一步”按钮,进入到生成订单页面,在此页面中会显示出所选择的旅游团,并给出相关旅游服务条款的声明,必须阅读并同意条款中的内容方可完成操作。在此网页中必须输入联系人信息和客人信息,其中“*”号为必填项。其部分页面如图18所示。图SEQ图\*ARABIC18信息填写页面其部分代码如下所示:if(mgrtu.saveTeamUser(tu)){ mgrt.updateTeam(team); Trafficlinetrafficline=(Trafficline)session.getAttribute("trafficlineid"); trafficline.setHot(trafficline.getHot()+1); mgrtl.updateTrafficline(trafficline); session.setAttribute("guests",guests); returnmapping.findForward("jointeamsuccess");}else{ request.setAttribute("mes","对不起,预订失败"); returnmapping.getInputForward();}如果对自己选择的旅游团不是很满意,可以单击“上一步”按钮返回出团计划页面,重新选择旅游团。单击“下一步”按钮,便会进入线路订单明细页面。在此页面中,会显示出基于该用户所选择和所输入信息的订单,其部分页面如图19所示。图SEQ图\*ARABIC19订单明细页面其部分代码如下:Trafficlinetrafficline=mgr.searchByID(id);Set<Team>teams=trafficline.getTeams();Iterator<Team>ts=teams.iterator();inttotal=0;inttickets=0;while(ts.hasNext()){ Teamteam=ts.next(); total+=team.getTotal(); tickets+=team.getNum();}request.setAttribute("trafficline",trafficline);request.setAttribute("total",total);request.setAttribute("tickets",tickets);returnmapping.findForward("ticket");在此网页中,单击“查询酒店”按钮可以得到相应的旅馆信息,如图20所示。图SEQ图\*ARABIC20查询旅馆页面其部分代码如下所示:publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ HotelSearchFormhotelSearchForm=(HotelSearchForm)form; Stringteamid=request.getParameter("tid"); intteamID=Integer.parseInt(teamid); Teamteam=mgr.searchTeamByID(teamID); Hotelhotel=team.getHotel(); request.setAttribute("hotel",hotel); returnmapping.getInputForward();}(7)订单管理功能此功能只对会员用户开发,只有会员用户才能进行旅游团的预订,并生成订单。会员登录系统后,会在其用户名的后面显示出订单记录超链接。单击链接,便可以进入订单管理功能即订单记录页面。在此页面中,会以分页显示的形式列出该会员的所有订单记录,且每页显示一张订单。该页面与线路订单明细页面相同,只是多出了分页导航链接和“取消预订”按钮。单击“取消预订”按钮,便可以删除当前页的订单,从而取消与此订单对应的旅游团预订操作。4.2.2管理员权限分系统在此分系统中,共有六个功能,它们分别是景点管理功能、旅馆管理功能、旅游团管理功能、旅游线路管理功能、票务统计功能和口令管理功能。这些功能提供了管理员对旅游资源信息进行全方面的管理与规划,管理员可以根据票务统计信息、热门信息分析出旅游爱好者当前的需求,从而动态更新旅游资源信息来满足广大游客的游玩需要。当以管理员的用户名和密码登录系统时,便会进入管理员权限分系统,其主页是以该网站前十大最受欢迎的旅游线路排名信息为主的,并且可以随时按照旅游线路的编号和名称进行查询,来了解特定旅游线路的详细信息,该网页如图21所示。图SEQ图\*ARABIC21管理员主页面其部分代码如下所示:publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ //TODOAuto-generatedmethodstub HttpSessionsession=request.getSession(); HotTrafficlineSearchFormhotTrafficlineSearchForm=newHotTrafficlineSearchForm(); hotTrafficlineSearchForm.setSelect("name"); List<Trafficline>trafficlines=mgr.searchHotTrafficlineTen(10); request.setAttribute("pages",1); request.setAttribute("countpage",1); request.setAttribute("hottrafficlines",trafficlines); session.setAttribute("hotTrafficlineSearchForm",hotTrafficlineSearchForm); returnmapping.findForward("admin");}在该页面中,单击查看详情,便可以浏览当前线路的详细信息,包括此线路所经过的所有旅游景点、所建立的旅游团等信息,其部分页面如图22所示。图SEQ图\*ARABIC22线路详细信息页面其部分页面如下所示:publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ //TODOAuto-generatedmethodstub Stringtlid=request.getParameter("id"); intid=Integer.parseInt(tlid); Trafficlinetrafficline=mgr.searchByID(id); request.setAttribute("trafficline",trafficline);returnmapping.findForward("trafficlineinfo");} (1)景点管理功能在导航栏中单击景点管理超链接,管理员便可以进入景点管

温馨提示

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

最新文档

评论

0/150

提交评论