第一章 绪 论
§1.1开发背景
旅游业具有“无烟产业”和“永远的朝阳产业”的美称,它已经和石油业、汽车业并列为世界三大产业;根据WTTC的统计,它每年产出4.7万亿美金的收入,直接或间接地为2亿700万人提供了就业机会,并支持着数以万计的企业的发展。
改革开放以来,我国的旅游业有了非常迅速的发展,但是比较而言,我国国内旅游业发展的广度深度都远远不能适应经济发展和人民生活水平提高的需要。随着市场经济的发展和人民收入水平的进一步提高,人民对旅游消费的需求将进一步上升,国内旅游业在国民经济中的地位和作用越来越重要[1]。
但我国旅游产业仍然基础薄弱,管理手段滞后,信息化程度低,企业效益较差。旅游行政管理部门存在管理方式落后,缺乏信息化管理手段,信息沟通渠道不通畅等问题.,面对困难和挑战,我国旅游业必须转变观念,创新思维,以信息化建设为突破口和新手段,整合各种资源,从而实现整个行业的新跨越。加强旅游信息化建设,可以提高各级管理部门的工作效率和管理水平,精简办事程序,降低工作成本,加大宣传力度,加快信息传播速度,提高信息实效性;另一方面可以通过开展电子商务,满足游客的个性化需求,提高旅游服务质量,改变旅游企业传统经营模式,降低成本,增加效益,从而提高整个旅游产业素质,旅游实现信息化,将会进一步壮大旅游支柱产业,提升旅游产业整体信息化水平,优化产业结构和资源配置,完善产业链,进而带动众多相关产业发展,拉动内需,扩大就业,增加外汇收入,对经济发展起到积极的推动作用。
目前,我国的一些旅游部门在信息化方面做的工作和其投入较少,对自身的发展起到了制约作用,可以通过建立旅游网站来宣传本地的风土人情,对信息进行网络化、信息化管理,提高自身竞争能力。
§1.2目前旅游行业存在的问题
目前有许多中型的旅游管理部门仍依靠原始的人工方式采用电子文档、电子表格等(例如WORD、EXCEL,或者简单的ACCESS数据库)来对旅游信息进行管理,大部分旅行社也无自己的旅游网站,无法在现在这个网络时代接受客户的网上预定。随着业务的不断扩展,旅行社业务操作中涉及的各种收费情况、客户情况以及旅游线路情况越来越复杂,业务操作人员若仅靠手工方式处理处理大量资料,则遗漏信息的现象更容易发生,同时也可能带来出错率的增长以及大量资源的浪费和闲置等问题。因此,只有加强对旅游部门信息资源的整合、统一管理,才能使行业更加合理、高效地运转。现行的旅游信息管理模式的问题主要体现在如下几个方面:
1.各类旅游信息查询速度慢,工作强度大。旅游信息中牵涉到游客资料、导游信息、费用、线路、景点、酒店等等大量的资料,用人工方式进行整理汇总时,速度慢、工作繁琐、易出错。
2.各类资源之间调配难度大。由于信息面广,信息量大,因此要对其中某些资源进行统一管理、调配是需要花费大量的人工。
3.相当一部分资源缺少一定的保护,处于不安全的状态,许多信息容易泄露。
4.对于客户的服务要求反应慢。基于上面的原因,对于客户提出的服务要求,势必不能做出快捷的反应。
5.缺少服务质量反馈的统一管理。
§1.3技术背景
§1.3.1数据库概论
数据库是数据管理的最新技术,是计算机科学的重要分支。今天,信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或组织生存和发展的重要条件。因此,作为信息系统核心和基础的数据库技术得到越来越广泛的应用,从小型单项事务处理系统到大型信息系统,从联机事务处理到联机分析处理,从一般企业管理到计算机辅助设计与制造(CAD/CAM)、计算机集成制造系统(CIMS)、办公信息系统(OIS)、地理信息系统(GIS)等,越来越多新的应用领域采用数据库存储和处理他们的信息资源[2]。
数据库的研究范围是十分广泛的,概括地讲可以包括以下三个领域:
1.数据库管理系统软件的研制;
2.数据库设计;
3.数据库理论;数据库学;
计算机领域中其他新兴技术的发展对数据库技术产生了重大影响。数据库技术和其他计算机技术的互相结合,互相深透,使数据库中新的技术内容层出不穷。数据库的许多概念,技术内容,应用领域,甚至某些原理都有了重大的发展和变化。建立和实现了一系列新型数据库系统,如分布式数据库系统,并行数据库系统,知识库系统,多媒体数据库系统等。它们共同构成了数据库系统大家族,使数据库技术不断地涌现新的研究方向。
本系统选用Microsoft SQL Server 2000数据库,原因在于SQL Server 2000 是一种数据库管理程序,可赋予更佳的用户体验,并且新增了导入、导出和处理 XML 数据文件等功能。由于该程序可以识别和标记常见错误,同时提供更正错误的选项,因此在SQL Server 2000中工作变得更加轻松自如。另外,SQL Server 2000的新功能还可以帮助数据库开发人员查看有关数据库对象之间相关性的信息。它可访问和使用多种来源的信息、轻松备份信息;能够满足专业开发人员的需要,而且对于新用户来说,还十分易于上手[3]。
§1.3.2 ASP介绍
ASP是Microsoft公司开发的Web服务器端脚本开发环境,利用它可以生成动态、高效的web应用程序。ASP为VB Script和java script等脚本语言提供了一个运行环境,使开发人员可以在HTML代码中使用脚本语言编写程序。同时,ASP自身也提供了一些很好的命令和内置对象。
ASP 内含于 IIS 3.0 和 4.0 之中 , 通过 ASP 我们可以结合 HTML 网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。ASP所有的程序都将在服务器端执行,包括所有嵌在普通 HTML 中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。 以下罗列了 Active Server Pages 所独具的一些特点:
1.使用 VBScript 、 JavaScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成网站的应用程序。
2.无须 compile 编译,容易编写,可在服务器端直接执行。
3.使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。
4.与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语言 (VBScript 、 Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。
5.Active Server Pages 能与任何 ActiveX scripting 语言相容。除了可使用 VBScript 或 JScript 语言来设计外,还通过 plug-in 的方式,使用由第三方所提供的其他脚本语言,譬如 REXX 、 Perl 、 Tcl 等。脚本引擎是处理脚本程序的 COM(Component Object Model) 物件[4]。
第二章 旅游网站需求分析
§2.1 项目概述
§2.1.1目标
该系统主要建立一个完整的旅游网站,突出旅游特点,有美观的界面设计。主要功能:
- 用户可以对各景点相关交通方式管理与查询、酒店预订、各个景点路程与旅游方式的设计与查询、 对个景点所需费用查询。
- 有一定数量旅游景点相关信息可供处理。方便游客了解景区各种相关信息,同时有利与景区管理部门的管理,加强双边的沟通与协作,以提高和改善管理水平,使游客通过对网站的浏览可以对景点有比较真实和丰富的了解,对景点本身做一个比较好的宣传和推广。
系统根据实际情况收集的资料为背景,网站中包括各个景区的基本情况介绍如:交通情况,门票价格和风景图片欣赏等,用户登陆后,都可以浏览站中的所有信息,同时可以通过系统来查询所需要的各种信息,并且可以订购门票和预约酒店以及车辆等。
管理人员登陆系统后,将各种烦琐的管理工作通过网站来管理,用最少的人力和物力提高管理水平,方便发布各种旅游信息,处理游客所遇到的各种问题,及时了解游客对旅游管理部门的意见,通过数据分析可以了解游客的基本情况和不同时期游客的变化情况,提前做出必要的准备工作。
管理人员通过系统处理各个事务,使前台的用户操作方便简单,突出旅游特点,具有美观的界面设计,保证网站安全稳定的运行。
§2.1.2用户的特点
旅游网站管理系统主要是用于旅游管理部门和旅游公司,对旅游信息的进行发布和修改以及加强游客进行交流。本系统的用户十分广泛,对用户的技术要求是:熟悉计算机操作,熟悉internet相关操作。
§2.1.3运行环境
硬件最小需求: 奔腾3以上CPU,256M以上内存,10G以上剩余硬盘空间
支持软件: 操作系统:Windows 98 /2000/XP
支持环境:IIS4.0
数据库:SQL Server 2000
§2.2旅游网站的可行性研究
采用现代化统一的计算机信息网站系统,能够有效帮助旅游企业优化旅游行业TQC,使其在行业内处于优势地位,并相对长期地保持这种战略优势。开发本系统的可行性研究如下:
1.技术可行性:技术上的可行性分析主要分析技术条件能否顺利完成开发工作,软、硬件能否满足需要。本系统采用ASP开发出友好美观的人机界面,便于用户理解、操作。数据库管理系统采用Microsoft SQL Server 2000,它能够处理大量数据,同时保持数据的完整性、安全性。因此本系统的开发平台已成熟可行。硬件方面,在科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越便宜,因此硬件平台也能够满足本系统所需[5]。
2.经济可行性:计算机技术发展异常迅猛的根本原因在于计算机的应用促进了社会经济的发展,给社会带来了巨大经济效益。因此基于计算机系统的成本-效益分析是可行性研究的重要内容。
§2.3系统功能模型建立
2.1系统顶层DFD图
顶层数据流图(图2.1)主要描述了整个旅游网站系统的数据流,表明用户通过身份验证直接进入旅游网站系统进行相关操作。
图2.2 旅游网站第一层DFD图
系统第一层数据流图描述了用户在整个系统中可以进行的操作流程过程。
用户首先的登陆系统,若为新用户则可以选择注册功能进行注册,然后在返回进入系统,进入系统后用户可以进行如下操作:
1.查询旅游信息:主要查询景点和酒店的信息,可以进行分类查询也可以用关键在字来查询用户需要的信息。
2.留言功能:用户可以查看别人以前的留言,也可以发表新的留言。
3.酒店预定:当用户查询到相关酒店,并且可以能够申请相关酒店预定。
4.信息浏览:用户可以浏览网站提供的各种旅游信息,包括旅游新闻、景点介绍等。
图2.3 用户登陆DFD图
图2.3用户注册DFD图描述了用户进入系统的流程图,老用户登陆系统时在身份验证中输入用户名和密码就可通过,而新用户则需要进行注册,填写注册信息并且成功后,将返回网站的主页成功登陆。
图2.4 用户查询DFD图
图2.4用户查询DFD图描述了用户进行信息查询的流程图,用户进行信息查询时可选择景点和酒店查询按选择的类型和输入的关键字进行查询,就会检索出景点库中所有包括你输入字段的信息。
图2.5用户酒店预定DFD图
图2.5用户酒店预定DFD图描述了用户在酒店预定的流程图,已经注册用户浏览了相关酒店资料后,可通过本模块来下一个预定定单。将可以选择酒店预定,而系统经过简单的逻辑判断信息是否有错后通过两个消息框的反馈,来确定酒店预定是否成功。
图2.6用户留言DFD图
图2.6用户留言DFD图描述了用户在留言功能的流程图,用户进入留言页面后可以查看以前所有的留言,也可以发表新的留言,在发表新留言时,用户必须先登陆系统,然后可以填写留言信息和发表留言信息。
第三章 旅游网站系统概要设计
§3.1 数据库设计
§3.1.1数据库设计概述
数据库是数据管理的最新技术。十多年来数据库管理系统已从专用的应用程序发展成为通用的系统软件。由于数据库具有数据结构化,最低冗余度,较高的程序与数据独立性,易于扩充,易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。因此不仅大型计算机及中小型计算机,甚至微型机都配有数据库管理系统。
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用性和相容性,提高了决策的可靠性。目前,数据库已经成为现代信息系统不可分割的重要组成部分。数据库技术也是计算机领域中发展最快的技术之一。
数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。数据库及其应用的性能都建立在良好的数据库设计的基础之上,数据库的数据是一切操作的基础,如果数据库设计不好,那么其它一切用于提高数据库性能的方法收效都是有限的。数据库设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。
设计数据库必须遵循一定的规则,在关系型数据库中,这种规则就是范式,范式是符合某一种级别的关系模式的集合。一般人们设计数据库遵循第三范式。即:数据库表中不包含已在其他表中包含的非主关键字信息。采用范式减少了数据冗余,节约了存储空间,同时加快了增、删、改的速度[6]。
§3.1.2数据库需求分析
整个系统所包括的信息有景点信息、用户信息、酒店信息、旅行社信息、留言信息等。可将这些信息抽象为下列系统所需要的数据项和数据结构:
1.景点管理(编号,景点名称,景点等级,天气情况,位置,住宿,费用,路线)
2.酒店管理(酒店编号,酒店名称,酒店具体地址,酒店星级,联系人,联系电话)
3.用户表(用户名,用户类型,密码)
4.旅行社管理(编号,名称,等级,负责线路,联系人,电话)
5.留言管理(留言编号,标题,留言人,日期,内容)
6.预定酒店表(编号,日期,用户,酒店)
注:带下划线表示主键
§3.1.3数据库逻辑结构设计
概念结构设计是数据库设计的核心。概念结构独立于数据库的逻辑结构,也独立与所使用的具体的数据库管理系统。概念模型(E-R模型)的组成元素有:实体、属性、联系,E-R模型用E-R图表示。实体是用户工作环境中所涉及的事务,属性是对实体特征的描述。
1.模型中的实体相当于一个实体集、一个表。实体用矩形框表示,实体名称标注在矩形框内。用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型。
2.属性是实体的性质。用椭圆框表示,与实体之间用一条线相连,表的主码是关键属性,关键属性项加下划线。
3.各子系统模块中主键相同的字段之间存在着相互关联的关系。
4.在程序中实现对他们的完整性和一致性控制。
E-R模型的组成元素有:实体、属性、联系。E-R模型用E-R图来表示。实体是用户工作环境中所涉及的事物,属性是对实体特征的描述。本系统主要的E-R图,见图3.1。
图3.1系统ER图
§3.1.4数据库的物理结构
服务器上建立名为test的数据库。其中包括下表:
用户表,见表3.1
酒店管理表,见表3.2
景点管理表,见表3.3
预定表,见表3.4
旅行社管理表,见表3.5
字段名称 | 数据类型 | 是否为空 | 说明 |
用户名 | Char | 否 | 主键 |
用户类型 | Char | 否 | |
密码 | Char | 否 |
表3.1YongHu表
字段名称 | 数据类型 | 是否为空 | 说明 |
酒店编号 | Int | 否 | 主键 |
酒店名称 | Char | 否 | |
酒店具体地址 | Char | 否 | |
酒店星级 | Char | 否 | |
联系人 | Char | 否 | |
联系电话 | Char | 否 |
表 3.2JiuDian表
字段名称 | 数据类型 | 是否为空 | 说明 |
编号 | Int | 否 | 主键 |
景点名称 | Char | 否 | |
天气情况 | Char | 否 | |
地理位置 | Char | 否 | |
等级 | Char | 否 |
表3.3JingDian表
字段名称 | 数据类型 | 是否为空 | 说明 |
姓名 | Char | 否 | 主键 |
身份证号 | Int | 否 | 主键 |
酒店名称 | Char | 否 |
表3.4YuDing表
字段名称 | 数据类型 | 是否为空 | 说明 |
编号 | Int | 否 | 主键 |
名称 | Char | 否 | |
等级 | Char | 否 | |
负责线路 | Char | 否 | |
联系电话 | Char | 是 |
表3.5LvXxngShe表
字段名称 | 数据类型 | 是否为空 | 说明 |
编号 | Int | 否 | 主键 |
用户名 | Char | 否 | |
标题 | Char | 否 | |
内容 | Char | 否 | |
时间 | Char | 否 |
表3.6LiuYan表
图3.2数据库关系图
§3.1.5数据字典
数据字典是在系统数据流程图的基础上。进一步定义和描述所有的数据项、数据结构、数据存储、处理过程和外部实体的详细逻辑内容与特征的工具。数据字典的任务是对于数据流程图中出现的元素的名字都有一个确切的解释。
本系统的数据字典如下:
文件名:用户表 |
别名: |
组成:用户名+密码+类型 |
备注:这是所有的用户信息表 |
表3.7数据文件“用户表”字典条目
文件名:景点表 |
别名: |
组成: 编号+名称+等级+地理位置+天气+路线+住宿条件+费用 |
备注: 这是所有的景点信息表 |
表3.8数据文件“景点表的字典条目
文件名:旅行社表 |
别名: |
组成: 编号+名称+等级+负责路线+联系电话+联系人 |
备注: |
表3.9 数据文件“旅行社表”的字典条目
文件名:酒店表 |
别名: |
组成: 编号+名称+地址+星级+联系电话+联系人 |
备注: |
表3.10 数据文件“酒店表”的字典条目
文件名:留言表 |
别名: |
组成:编号+留言内容+留言人+留言时间+标题 |
备注: |
表3.11 数据文件“留言表”的字典条目
文件名:负责线路表 |
别名: |
组成:旅行社编号+景点编号+旅行社名称+景点名称 |
备注: |
表3.12 数据文件“负责路线表”的字典条目
文件名:酒店预定表 |
别名: |
组成:用户名+酒店编号+酒店名称+时间 |
备注: |
表3.13 数据文件“酒店预定表”的字典条目
§3.1.6数据库的完整性和安全性
数据库的完整性是指数据的正确性和相容性。数据库管理系统(DBMS)用一定的机制来检查数据库中的数据是否满足规定的条件——完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中[7]。本系统中定义了表与表之间的联系及表中各字段属性约束有助于实现有助于完整性。
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。在数据库系统中,大量的数据集中存放,而且为许多用户直接共享,是宝贵的信息资源,系统的安全保护措施就显得更为重要,它可以保护数据库防止恶意的破坏和非法的存取。在系统中,用户通过浏览器打开本站首页后,必须经过注册登陆,方可对本站景点进行浏览、查看、检索等操作。用户注册的用户名是唯一的,密码通过加密。在用户登陆,必须输入用户名和密码,并通过数据库的验证,同时对用户的权限进行验证,防止非法用户和未授权用户对本站进行非法访问和操作,保证本站的安全。
§3.2 系统总体结构设计
该系统在Windows98/2000/XP环境下,主要采用ASP开发工具,Microsoft SQL Server 2000数据库来设计,开发过程与成果应符合GB/T 11457-1995软件工程术语,GB/T 8567-1988计算机软件产品开发文件编制指南等。
§3.2.1旅游网站系统总体结构图
绘制系统结构图的过程,实际上就是对系统功能模块进行分解设计的过程,即合理地将数据流程图转变为所需要的系统结构图[8]。
系统结构图将会使读者和用户能直观的了解系统的结构模式,理解系统的各个功能的结构,能很好地方便用户使用和理解整个系统。
本网站的系统结构图如下:
图3.3系统总体结构图
§3.2.2网站的结构
本网站的开发过程中采用的是浏览器/服务器(Browser/Server)模式。它以访问数据服务器为中心,HTTP协议为传输协议,客户端通过浏览器(Browser)访问WEB服务器和数据服务器。其三层结构见图3.4:
图3.4 B/S三层结构图
图中从左到右,分为三层结构:
第一层:浏览器。主要完成客户和后台的交互及最终查询结果的输出。浏览器将HTML语言代码转化成图文网页。网页具备一定的交互功能,允许用户根据网页提供的表单输入信息,提交给后台并提出处理请求。后台处理完后,将结果返回至用户的浏览器。
第二层:WEB服务器,主要完成客户的应用功能。WEB服务器接受客户请求后,启动相应的进程响应这一请求,动态生成一串HTML代码,返回用户的浏览器。若用户请求中包含数据的存取,WEB服务器还将与数据库服务器连接,协同完成处理工作。
第三层:数据库服务器,主要协调不同的WEB服务器发出的请求,管理数据库[10]。
§3.2.3系统功能模块设计
根据需求分析的结果,按照“低耦合、高内聚”的原则,本系统将划分为以下主要功能模块:用户功能模块;景点信息浏览功能模块;景点/酒店信息查询功能模块;
在线留言功能模块;旅行社信息浏览功能模块;酒店预定功能模块。
1.用户功能模块
实现的主要功能包括新用户注册、老用户登陆,同时,管理员对用户进行管理。
(1)用户注册。新用户首次访问本站,必须注册。在用户注册时,自动添加用户注册时间,系统默认该用户的权限为0(普通用户),只能浏览、检索旅游信息;若想在线留言,则必须注册成为会员,而酒店预定,必须通过既定的交费形式向本站缴纳一定的费用后成为高级用户。
注册成功后调用登录模块。
(2)用户登陆。已注册用户在访问本站,必须先登陆后访问。登陆时需输入用户名和密码,通过系统验证(包括用户名和密码的验证以及用户权限验证)成功后方可进行相关操作。
用户登录成功后调用信息浏览、信息检索、留言模块等。
(3)查看用户基本信息。主要是用户查看自己注册是的基本信息,包括用户权限及用户的消费情况。
(4)用户管理。管理员查看用户基本信息、查看用户交费申请信息,修改用户权限。
用户管理调用查看用户信息、查看用户交费申请信息、用户权限修改模块。
用户功能模块流程图如下:
图3.5用户注册模块流程图
2.信息检索模块
该模块主要是方便用户对本站景点和酒店进行相关检索,并返回检索结果。用户可根据自己不同的需要,系统根据用户选择的不同组合检索方式和输入的关键字进行相关检索,得到用户检索的信息。
(1)模糊查询。按选择的类型和输入的关键字进行查询,就会检索出景点库中所有包括你输入字段的景点信息。如输入关键字“华”并选择“按景点名称”检索结果包括片名为“..华..”的景点信息。
(2)精确查询。按选择的类型和输入的关键字进行查询,就会检索出景点库中与输入字段完全匹配的景点信息。
信息检索模块流程图如下:
图3.6用户查询模块流程图
3.在线留言模块
该模块主要是方便用户和管理人员进行沟通和交流,用户可以发表自己的看法也可浏览其他用户的留言。为了让旅游部门掌握各方面的反馈信息,本系统设置了留言簿模块。通过此模块,可以上传留言、查看以往的留言信息。留言信息包括:留言的用户、留言时间及留言内容。
(1)浏览留言。用户登陆后可以查看以前的留言。
(2)发表留言。用户如果要留言必须登陆后发表其留言。
在线留言模块流程图如下:
图3.7用户留言模块流程图
4.酒店预定
该功能模块主要是客户浏览了相关资料后,可通过本模块的下拉一个预定定单。将个人信息及预定的酒店填写完整后,上交给系统,而系统经过简单的逻辑判断信息是否有错后通过两个消息框的反馈,来确定酒店预定是否成功。
酒店预定功能流程如下:
图3.8用户酒店预定模块流程图
5.信息浏览
实现的主要功能包括查看站内公告(最新公告及近期的所有公告)、点击景点,酒店,旅行社的信息,并且可以进行查询功能。
(1)旅游新闻。通过“公告栏”可了解本站的最新信息,并可查看本站的近期的所有公告内容。
(2)景点信息。通过景点页面进行各个景点的信息浏览和查询。
(3)旅行社信息。通过景点页面进行各个旅行社的信息浏览和查询。
(4)酒店信息。通过景点页面进行各个酒店的信息浏览和查询。
§3.2.4主界面设计
主界面是一个网站的门面,如同公司的形象,特别注重设计和规划。它是用户首先见到的界面,它的好坏直接影响到网站的访问率。为此,作者从以下几个方面对主界面进行了设计。
1.在色彩搭配上,一种较明快的色彩为基调,配以相关的其他色彩,给用户一种鲜而不艳的美感。
2.在字体选用上,大小适当,尽量使用常用字体,适当配用艺术字。
3.在网页制作上,采用框架式结构,在框架中嵌入子页,将大表化小,图片压缩,尽量减少页面响应时间。
4.在内容上,主界面内容充实而不繁杂,既体现本站特色,又能满足用户需要。
5.在用户操作上,简化用户操作,删去那些空洞的环节。例如,“用户注册”只须填写简单信息即可。
§3.2.5输入输出界面设计
旅游网站系统的输入界面主要包括用户注册、登录,信息检索和在线留言等,输入设计的内容包括以下几点:
1.输入数据的内容设计,包括确定输入数据项名称、数据内容、精度、数值范围。例如,在用户登陆中,用户输入的数据包括用户名,密码,用户名和密码都必须大于6位且小于16位
2.确定数据输入方式,用户注册、登录,信息检索和在线留言等输入操作,都是在客户端浏览器上完成,并立即更新服务器端数据库。
3.输入数据的正确性校验,保证输入数据的正确性。例如在用户登录时,必须校验用户名和密码,只有在二都正确的情况下才能正确登录.
旅游网站系统的输出界面主要包括旅游新闻,景点推荐,检索结果等,输出设计的内容包括以下几点:
1.确定输出的内容。用户是信息的主要使用者,在进行输出内容的设计时,首先要确定用户在使用信息方面的要求,包括使用的目的、输出速度、频率、数量、安全性等。根据用户的要求,设计输出信息的内容,输出的项目及数据结构、数据类型、位数及取值范围,数据的生成途径,完整性及一致性的考虑。
2 . 确定输出格式。输出格式设计要满足使用者的要求和习惯,达到格式清晰、美观、易于阅读和理解的要求。在本系统中,输出页面的设计,尽量满足用户的信息需要,并有相关的提示信息。输入输出等界面设计,均仿照首页的风格进行,使整个网站页面风格一致,别具特色。
第四章 旅游网站具体实现
§4.1数据库连接
本系统主要运用ADO进行数据库访问,所以对ASP中的数据库对象有必要做一个了解,特别是系统中要用到的ADO对象。
在ASP中,常用的数据访问接口有下列三种[4]:数据访问对象(DAO,Data Access Object)、远程数据对象(RDO,Remote Data Object)和ActiveX数据对象(ADO,ActiveX Data Object )。在开发过程中,我们通常使用的方法是:先使用数据库管理系统(例如:Microsoft Access)建立好数据库和数据表结构,然后在程序中通过数据库控件或引用ADO对象与数据库中的表建立连接。
ADO是ActiveX Data Objects 的缩写,是一项新的数据库的存取技术。ADO定义了一个可编程的对象集合。ADO对象模型如下图2-1所示:
2-1 ADO对象模型
对于ADO对象来说,在Flash竞赛网站后台管理系统中用到的主要是以下两个对象: Connection对象,Recordset对象,但是对Command对象也需做一些了解。
(1)Connection对象。Connection对象用于建立与数据库的连接。通过连接可从应用程序访问数据源。它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息。
(2)Recordset对象。Recordset对象代表一个记录集,这个记录集是一个已连接的数据库中的表,或者是Command对象的执行结果返回的记录集。在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的。Recordset对象用于指定行,移动行,添加,更改,删除记录。
(3)Command对象。在建立Connection后,可以发出命令操作数据源。一般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询。Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用。
下面就具体地说说如何用ADO存取数据:
在实际编程过程中使用ADO的一个典型的存取数据的步骤为:
(1)连接数据源
(2)打开记录集
(3)使用记录集
(4)断开连接。
具体的用法如下所述:
(1)连接数据源。利用Connection对象可以创建一个数据源的连接。应用的方法是Connection对象的Open方法。
(2) 打开记录集。实际上记录集返回的是一个从数据库取回的查询结果集。因此他有两种打开方法:一种使用记录集的Open方法,另一种是用Connection对象的Execute方法。
(3) 使用记录集。具体有以下几种操作:
- 加新的记录:在ADO中添加新的记录用的方法为:AddNew。在用完AddNew方法为记录集添加新的记录后,应使用UpDate将所添加的数据存储到数据库中。
- 修改记录集:其实修改核对记录集中的数据和重新赋值没有什么太大的区别,只要用SQL语句将要修改的字段中的一个数据找出来重新赋值就可以了。
- 删除记录:在ADO中删除记录集中的数据的方法为:Delete方法,这与DAO对象的方法相同,但是在ADO中它的能力增强了,可以删除掉一组记录了。
- 查询记录:在ADO中查询的方法很灵活,有几种查询的方法:
① 使用连接对象的Execute方法执行SQL命令,返回查询记录集。
② 使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集。
(4) 断开连接。在应用程序结束之前,应该释放分配给ADO对象的资源,操作系统回收这些资源并可以再分配给其他应用程序。使用的方法为Close方法。
数据库连接代码如下:
<script language="javascript" runat="server">
function Application_OnStart() {
Application.lock();
Application("ConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ Server.mappath("/lywz/DataBase/LVYou.mdb");
Application.unlock();
};
</script>
§4.2功能模块的实现
§4.2.1用户模块的实现
本模块输入输出包括:
用户注册:输入用户名、密码等。
用户登陆:输入用户名、密码。
输出包括:输出密码、输出用户名等。
1.用户登陆;当用户输入的用户名时与数据库中的用户名和密码进行比较,如果两项都相同则返回到index.asp,如果不同弹出对话框要求重新输入,并且提示“用户名或密码错误”要求重新输入。
用户登陆窗口主要代码:
<%
if (Request.ServerVariables("REQUEST_METHOD")=="POST") {
var ming = String(Request.Form("YongHuMing"));
var miMa = String(Request.Form("MiMa"));
try {
if (YongHu.DengLu(ming,0,hex_sha1(String(miMa))) == 1) {
Response.Write("<font color='blue'>登陆成功!返回<a href='index.asp'>首页</a>。</font>");
if (Request.Form("form")!=null)
if (String(Request.Form("form")).length > 1)
Response.Redirect(Request.Form("form"));
} else {
Response.Write("<font color='red'>用户名或密码错误!</font>");
}
}
catch (e) {
Response.Write("<font color='red'>" + e.description + "</font>");
}
}
%>
2.用户注册;用户如果首次进入系统则要求注册,用户注册时用户名将不能重复,且在6到16位之间,注册成功则写如数据库的用户表中。
主要代码如下:
<%
if (Request.ServerVariables("REQUEST_METHOD")=="POST") {
try {
if (hasRequest(String(Request.Form("MiMa")))){
YongHu.ZhuCe(Request.Form("YongHuMing"), 0, hex_sha1(String(Request.Form("MiMa"))));
} else {
YongHu.ZhuCe(Request.Form("YongHuMing"), 0, null);
}
Response.Write("<font color='blue'>注册成功! 返回<a href='index.asp'>首页</a></font>");
if (Request.Form("form")!=null)
if (String(Request.Form("form")).length > 1)
Response.Redirect(Request.Form("form"));
}
catch (e) {
Response.Write("<font color='red'>");
if (e.number == -2147467259)
Response.Write("该用户名已被注册,请重新选择一个用户名。");
else
if (e.number<0)
Response.Write("系统故障,请联系管理员。" + e.number + e.description);
else
Response.Write("用户名或密码有误,请重新输入。");
Response.Write("</font>");
}
}
%>
§4.2.2查询模块的实现
本模块输入:输入查询关键字,选择查询类型和方式。
本模块输出:输出检索的相关结果。
例如:按景点名称进行模糊查询,在关键字文本框中,输入与你查询的片名相关的字段,就会检索出景点库中所有包括你输入字段的信息。如输入“九寨”检索结果包括片名为“..九寨..”的景点信息。按地址进行精确查询,在关键字文本框中,输入与你检索的景点地理位置,就会检索出景点库中与你输入字段完全匹配的景点信息。
关键代码如下:
<style type="text/css">
form.query { margin-bottom: 42px; font-family: "georgia"; font-size: 14px;}
form.query input { font-size: 14px;}
</style>
<table align="left">
<tr><td width="214">
<form method="get" action="query_jingdian.asp" class="query">
<h2>景点查询</h2>
<p><select name="Type" style="width: 80px;">
<option>名称</option>
<option>地理位置</option>
<option>路线</option>
</select><input type="radio" name="xx" checked />模糊查找</p>
<p><input type="text" name="Key" /></p>
<p><input type="submit" value="查询" /></p>
</form>
<form method="get" action="query_jiudian.asp" class="query">
<h2>酒店查询</h2>
<p><select name="Type" style="width: 80px;">
<option>地址</option>
<option>名称</option>
</select><input type="radio" name="xx" checked />模糊查找</p></p>
<p><input type="text" name="Key" /></p>
<p><input type="submit" value="查询" /></p>
</form>
§4.2.3在线留言模块的实现
本模块输入:用户名,密码,留言主题,留言内容等。
本模块输出:留言时间,留言者,留言主题,留言内容等。
用户留言则必须先登陆,若没有登陆则要求返回denglu.asp进行登陆。
主要代码如下:
<%
if (!Session("YongHu")) {
%>
<!-- 未登陆 -->
<style type="text/css">
.hdl input{font-size: 12px;}
</style>
<form method="post" action="denglu.asp" class="hdl">
<input type="hidden" name="form" value="liuyan.asp" />
<table>
<tr><td height="26">用户名:<input type="text" name="YongHuMing" size="12" /></td>
<td>密码:<input type="password" name="MiMa" size="12" /></td>
<td valign="bottom"><input type="image" src="images/login.gif" /> 留言需 <a href="reg.asp" style="color: #333;">注册</a></td>
</tr>
</table>
</form>
<%
} else {
%>
<style type="text/css">
input,textarea {
font-family: georgia;
font-size: 14px;
}
textarea {
font-family: "楷体_GB2312";
}
</style>
<!-- 已登陆 -->
<form method="post" action="liuyan_add.asp">
<table>
<tr><td>标题:</td><td><input type="text" name="BiaoTi" size="36" /> 标题50字内,内容1000字内</td></tr>
<tr><td>内容:</td><td><textarea rows="5" cols="70" name="neirong"></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="image" src="images/ly.gif" /></td></tr>
</table>
</form>
<%
}
%>
在留言板添加新的留言的主要代码如下:
<%
if (Request.ServerVariables("REQUEST_METHOD")=="POST") {
if (Session("YongHu") != null) {
try {
LiuYan.TianJia(Request.Form("BiaoTi"), Session("YongHu").Ming, Request.Form("NeiRong"));
Response.Write("<font color='blue'>留言成功! 返回<a href='liuyan.asp'>留言板</a></font>");
}
catch (e) {
Response.Write("<font color='red'>");
if (e.number<0)
Response.Write("系统故障,请联系管理员。" + e.number + e.description);
else
Response.Write("留言标题或内容为空,或长度非法,请<a href='javascript:window.history.go(-1)'>返回</a>修改。");
Response.Write("</font>");
}
} else {
Response.Write("<font color='red'>请先<a href='denglu.asp?form=liuyan.asp'>登陆。</font>");
}
}
%>
§4.2.4酒店预定模块的实现
用户如果要预定酒店则首先登陆系统并且选择酒店后才可以预定。
主要代码如下:
<%
if (hasRequest("bianhao")) {
if (!isNum(Request("bianhao")))
Response.Write("<p style='color:red; text-align:center;'>参数非法,<a href='javascript:window.history.go(-1)'>返回</a>。</p>");
else
if (Session("YongHu")==null) {
Response.Write("<p style='text-align: center; margin-bottom: 25px;'>请先<a href='denglu.asp?form=yuding.asp?bianhao=" + String(Request("bianhao")) + "'>登陆</a>。</p>");
} else {
try {
YuDing.TianJia(Number(Request("bianhao")),Session("YongHu").Ming);
Response.Write("<p style='color:blue; text-align:center;'>预定成功。</p>");
}
catch (e) {
if (e.number == -2147467259)
Response.Write("<p style='color:red; text-align:center;'>你已预定该酒店。</p>");
}
}
} else {
Response.Write("<font color='red'>缺少参数</font><a href='javascript:window.history.go(-1)'>返回</a>");
}
%>
§4.2.5后台管理模块的实现
管理人员登陆系统后可以对整个系统进行管理,包括:用户管理,旅行社管理,酒店管理,景点管理,预定管理和留言管理等。
用户管理:管理员可以对用户名进行删除和查看,用户密码采用加密措施,管理员将不能查看原密码。
旅行社管理:管理员可以对旅行社进行信息添加和删除功能。
酒店管理:管理人员可以对酒店信息进行删除、修改和添加。
景点管理:管理员可以对景点信息进行删除、修改和添加。
预定管理:管理员可以对预定信息进行删除和查看。
留言管理:管理员可以对留言信息进行删除和查看
§4.3动态旅游网站的实现
动态网站的通常都有较大的伸缩性,网站规模可大可小,各项功能也可分期逐步实现。因此,可按照功能的轻重缓急先实现比较重要的功能,然后在现有系统的基础上再做功能开发扩充。由于时间、技术及篇幅限制,本文对“旅游网站”的用户登陆和注册、景点信息查询、旅行社信息查询、酒店预定等功能做了开发。
§4.3.1旅游网站的主页
本站点主页组成元素:
1.在页面显眼部位插入LOGO。
2.在页面中部作为景点简介及最新的旅游信息发布。
图4.1系统主页
§4.3.2旅游网站的查询页面
本页通过连接上文设计开发的程序的后台数据库,实现显示酒店和景点的最新信息的功能。打开本页面时执行页面加载事件,连接到数据库。动态生成酒店和景点查询的页面。
1.一个下拉列表控件。用来向用户通过提供的所有景点名称/位置/旅游路线来进行查询。
2.一个文本域。用来向用户提供关键字查询。
图4.2系统查询页面
§4.3.3景点页面
用户可以通过点击地图坐标对景点信息的查询和浏览。
同时在景点页面也可以通过点击地图坐标来查询各个景点的信息,如图:
图4.3景点信息浏览页面
§4.3.4旅行社页
用户可以通过点击旅行社的列表对旅行社信息进行浏览和查看其详细介绍。
图4.4旅行社信息浏览页面
§4.3.5酒店信息页面
用户可以通过点击酒店的列表对酒店信息进行浏览和查看其详细介绍。
图4.5旅行社信息浏览页面
§4.3.6在线留言页面
用户可以查看所有的留言信息,如果自己要留言则必须先登陆系统后才可以进行留言的相关操作。
图4.6在线留言页面留言
§4.3.7后台管理页面
管理员登陆时需输入用户名和密码,通过系统验证(包括用户名和密码的验证以及用户权限验证)成功后方可进行相关操作。
图4.7管理员登陆窗口
进入管理系统页面,可以对整个系统进行管理,主要功能包括:
1.对用户信息的查看和修改;
2.对酒店信息的查看、修改和添加;
3.对旅行社信息的查看、修改和添加;
4.对景点信息的查看、修改和添加;
5.对酒店预定信息的查看;
6.对留言信息的查看和删除;
图4.7后台管理页面
第五章 旅游网站系统应用与测试
§5.1系统测试
该系统在本地服务器上进行运行和调试,首先是对IIS的安装,安装完毕后将文件放入根目录,并且建立虚拟目录后就可以在IE浏览器上进行运行和测试。
在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。测试目的在于:测试是指“用意在发现错误而执行一个程序的过程”;一个好的测试用例是指这个测试用例有很高的概率可以发现一个尚未发现的错误;一个成功的测试是指它成功地发现一个尚未发现的错误[11]。
本系统的测试和纠错信息流程如图5.1所示。
图5.1 测试和纠错信息流程图
按照软件工程的观点,软件测试(主要是指多模块程序的测试)共包括4个层次。如图5.2所示,它表明了层次测试的信息流程。
图5.2 层次测试的信息流程图
1.单元测试。单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。
2.集成测试和确认测试。这一阶段的任务,是通过了单元测试的模块逐步组装起来,通过测试与纠错,最终得到一个满足需求的目标软件。
3.系统测试。在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试[12]。
在次测试中,我们采用白盒测试和黑盒测试相结合的方法。
§5.2 单元测试实例
1.“用户注册”测试
测试要点 | 测试数据 | 测试结果 |
用户名、密码等 | 已存在的用户名;输入已经注册过的用户名“liuqiang” | 提示“该用户名已存在,请选择其它用户名” |
用户名、密码等 | 用户名为真、密码不符合要求输入 “zhangsan”而密码为“123” | 提示“密码在6-16为之间” |
表5.1 用户注册测试表
2.“用户登录”测试
测试要点 | 测试路径 | 测试结果 |
用户名、密码 | 用户名为假、密码为假;输入用户名“hddh”;密码“123456” | 提示“用户名或密码错误”并返回重新登录 |
用户名、密码 | 用户名为真、密码为假;输入:用户名“liuqiang”; 密码“123456” | 提示“登录失败”并返回重新登录 |
用户名、密码 | 用户名为真、密码为真;输入:用户名“liuqiang”;密码“147258” | 提示“登录成功” 返回主页 |
表5.2 用户登录测试表
3.“信息检索”测试
测试要点 | 测试路径 | 测试结果 |
关键字 | 关键字为空 | 提示“没有你要查询的信息” |
关键字 | 关键字为假 输入“啊” | 返回检索结果:“没有你要查询的信息” |
关键字 | 关键字为真 “九寨” | 根据选择的检索类型和方式返回检索结果 |
表5.3 信息检索测试表
4.“在线留言”测试
测试要点 | 测试数据 | 测试结果 |
用户名、密码、留言等 | 已登陆的用户 如“xikeda” | 可以直接留言 |
用户名、密码、留言等 | 用户名为真、密码与确认密码不一致 | 提示“请重新登陆” |
用户名、密码、留言等 | 用户名已经登陆,留言为空 | 提示“请按规范例子输入你的留言” |
用户名、密码、留言等 | 用户名为真、密码为真,留言正确 | 提示“留言成功” 返回留言页面 |
表5.4在线留言测试表
以上测试结果均达到预期目标。
§5.3 数据跟踪实例
在对旅游网站系统测试过程中,作者对系统内的数据进行跟踪。数据跟踪实例如下:
1.用户注册。在“用户注册”测试中,用户通过注册页面按要求填写注册信息并提交完成。打开数据库,就可以看到用户注册时输入的信息。如果输入的数据不符合系统要求,数据就不能写入数据库且系统会提示错误信息。经过多次重复地测试,发现系统存在的问题并及时修改,最终达到既定目标,
2.用户登录。在“用户权限”测试中,用户通过输入用户名和密码登录,在此过程中,系统会验证用户的权限,如果权限值为1,则为管理员;权限值为0,则为普通用户。权限低的用户,对本站的访问会受到限制。通过对不同权限用户的测试跟踪,证明了此功能的正确性。
3.景点/酒店信息检索。在“信息检索”测试中,通过输入同的关键字和选择不同的查询方式,检索结果同数据库中的数据进行比较,大量数据测试证明此模块的功能达到预期目标。
4.在线留言。在“在线留言”测试中,用户通过留言页面按要求填写留言信息并提交完成。
5.酒店预定。在“酒店预定”测试中,用户通过酒店预定页面按要求提交并完成。
§5.4 综合测试
在以上测试的基础上,对系统功能进行了整体测试,依次检验系统功能是否符合系统开发的目标。经过使用大量的数据多次进行系统测试,发现系统存在的问题并及时改进,最终实现了网站的开发目标。
结 论
旅游网站系统是对现在比较流行的旅游网站进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计、Web应用层设计等,是一个具有实际应用意义的系统。本系统已实现功能如下。
1.用户注册、登陆、权限验证,用户查看注册信息,用户交费申请等。
2.管理员查看用户基本信息,更改用户权限等。
3.站内旅游信息浏览,包括景点浏览,旅行社导航景点推荐、最新旅游新闻、站内公告等浏览和查看。
4.站内检索功能:包括按景点名称、地理位置、旅游路线以及用户输入的关键字对站内信息进行模糊检索和精确检索等。
5.在线留言功能。
6.酒店预定。
但是由于在本项目开始的时候,作者对ASP和Web应用程序设计方面的运用不太熟悉,再加之毕业设计的时间有限,存在不少问题有待进一步改进和完善。主要针对以下几方面:
1.系统的某些设计的可扩展性并不十分理想,在以后的系统维护过程中,使用重构方法对系统进行重构,使系统的设计日益趋于更强的可扩展性。
2.多开发和使用用户控件,以提高代码的重复使用率和运行效率方面欠佳,有待进一步改善。
3.在功能实现方面,还有许多功能需要拓展,需要进一步完善和优化。
在做毕业设计之前,作者对旅游网站系统的理解,是停留在感官和理论水平上的,是“纸上谈兵”,缺乏实际的软件开发经验。这次通过做毕业设计,完成了旅游网站系统的软件开发任务。在整个开发过程中,遇到了很多问题,但“功夫不负有心人”,最终,问题都被一一解决了。对其中比较深刻的几点体会总结如下:
1.刚开始时,作者对旅游网站系统的认知很肤浅,对其工作原理,实现的方式,开发的原则和方法,没有一个明确、清楚的概念和思路。在指导老师的推荐下,作者查阅了很多相关资料和文章,如《ASP入门与提高》、《信息组织与检索》、《软件工程》等。
2.完成从“大而全”到“小而精”的转变。当作者确定了做该课题,开始进行系统分析、设计时,总是想把系统的每一个细节都在程序上体现出来,结果使作者感到工作了太大、力不从心,感到无从下手。后来经过指导老师指点迷津,和自己的思考,抓住了本系统的主要功能,确定了软件开发的方向,使毕业设计工作得以顺利进行下去。
3.从教条主义、理论主义到理论联系实际的转变。因为没有写毕业论文的经验,开始时总是生搬硬套书本上的理论和概念,写出的论文非常死板,毫无新意,不能真正地描述出软件开发的全过程,犯了教条主义错误。经过老师的多次指点和作者的数次修改,对论文从结构和内容上做了大幅度的调整,删去论文中过多的理论和概念,把理论知识同自己的实际开发过程结合起来,用自己的语言和科学的方法清楚地表达出来。经过反复地阅读和数次的修改,完成了论文的写作。
总之,经过几个月的努力,最终完成了旅游网站系统的开发与设计,完成了论文的写作。在开发过程中,体验了其中的苦与乐,学会了如何面临困难,如何解决问题,学会了团结合作,达到了锻炼的目的。同时,拓展了知识面,进一步加深了对软件开发的理解和认识。