旅游管理系统课程设计

目 录

一、

旅游管理系统规划 „„„„„„„„„„„„„„„(3)

1.1 开发背景„„„„„„„„„„„„„„„„„„„„„„(3) 1.2 旅行社管理现状„„„„„„„„„„„„„„„„„„„(3) 1.3 新系统目标„„„„„„„„„„„„„„„„„„„„„(4) 1.4 系统总体结构以及可行性分析„„„„„„„„„„„„„(4)

二、 旅游管理系统分析 „„„„„„„„„„„„„„„(6)

2.1 业务流程分析„„„„„„„„„„„„„„„„„„„„(6) 2.2 数据流程分析„„„„„„„„„„„„„„„„„„„„(7) 2.3 数据字典„„„„„„„„„„„„„„„„„„„„„„(8)

三、 旅游管理系统设计 „„„„„„„„„„„„„„„(11)

3.1 系统设计的任务及原则„„„„„„„„„„„„„„„„(11) 3.2 系统总体结构分析„„„„„„„„„„„„„„„„„„(12) 3.3 代码设计„„„„„„„„„„„„„„„„„„„„„„(13) 3.4 数据库设计„„„„„„„„„„„„„„„„„„„„„(13) 3.5 输入输出设计„„„„„„„„„„„„„„„„„„„„(15) 3.6 物理配置方案设计„„„„„„„„„„„„„„„„„„(16)

四、 旅游管理系统实施 „„„„„„„„„„„„„„„(16)

4.1 系统开发环境„„„„„„„„„„„„„„„„„„„„(16) 4.2 模块功能实现„„„„„„„„„„„„„„„„„„„„(16) 4.3 系统运行与调试„„„„„„„„„„„„„„„„„„„(38)

五、 系统评价„„„„„„„„„„„„„„„„„„„„„(38)

5.1旅游管理系统优点 „„„„„„„„„„„„„„„„„„(38) 5.2旅游管理系统缺点 „„„„„„„„„„„„„„„„„„(38)

六、 总结 „„„„„„„„„„„„„„„„„„„„„„„(39)

图0 旅游管理系统开发流程图

一 旅游管理系统规划

1.1开发背景

杭州新天地旅行社成立于1997年1月,经过了十余年的努力,公司已逐步发展成为一家专业的旅游服务机构,以自身良好的社会形象,完善的经营网络,先进的服务手段,丰富的旅游产品,广泛的客户基础,完善并建成了现代化程度较高的旅行社。公司坚持质量为本,效益优先的经营理念,将自身已有的国内旅游服务网络与丰富的旅游资源、先进的服务理念及良好的服务质量紧密结合,专业从事为企业及个人提供高品质的全球旅游资讯及出行服务。业务范围包括经营国内旅游业务为主,组织团队、散客旅游,安排商务、会务、国内外考察活动,代办国内、国际航班机票、火车票、轮船票,商务租车、会议安排、度假产品的预订及自助旅行等全方位的服务。

但是公司的内部管理系统还不完善,还在进行以人工统计和分配为主的工作,不但花费了人工,而且由于数据复杂往往难以避免会出错,给企业造成一定的负面影响,降低了企业的工作效率。因此,在这个以计算机网络技术为主流的时代,公司有必要开发一个完善的内部管理系统。

1.2旅行社内部管理现状

伴随着中国旅游业的高速发展,我国旅行社行业发生了巨大的变化,特别是近十年来,行业规模不断扩大,从业人员不断增加,经营体制不断创新,经营环境不断改善,旅行社行业已经成为我国拉动经济增长、扩大就业渠道的重要的服务行业之一。 但是仍存在一些问题。拿杭州新天地旅行社来说,就存在以下一些问题:

1.信息处理效率低,无法高效地进行游客登记,导游人员管理和组织排团。亦无法及时向财务科和计调部门提交相关资料。从而影响游客的旅行质量。 2.目前仍有部分业务采用人工授理的传统运作模式,效率低下,出错率达到5%。信息系统的建设和更新已成为迫切需要。

3.现有系统不能跟踪客户信息,进行客户关系管理。

4.对于新推出的会员业务,需要新的系统来实现对其的管理。

5.旅游高峰期间订单数量大幅增长,不能及时响应处理以至于商机流失27%。 6.客户投诉与员工业绩不能很好的挂钩,激励和约束机制难以奏效。

7.没有很好的利用网络服务渠道,为客户提供网上查询、参团等业务,失去 25%的潜在客户。

8.内部信息和数据无法有效整合、记录和保存,决策层不能根据市场变化及时

做出调整经营战略的决策。 9.外联部、地接部不能保存查询兄弟旅行社及当地住宿餐饮娱乐业的相关情况。

1.3 新系统目标

旅游管理系统的目标是对旅行社的导游人员以及客户进行管理和对团队进行编排,以极大地提高业务信息记录、统计、编排等信息管理的工作效率。尽量使系统的功能设计,流程设计与实际操作吻合,有一定的可行性和现实意义。

旅行社对旅游管理系统的要求有以下几点:

1、系统要本着服从和服务于企业战略使命和长期目标要求,以及继承与优化相结合的原则,来制定信息系统开发方案。

2、系统既要解决现行系统存在的问题,又要充分预计未来的需求变化,使系统具有足够的适应性和先进性,还要方便运行管理和维护。

3、系统反映的流程简洁,自动化程度比较高.如能自动打印报表,自动进行一些简单的结算,为管理人员提供相对准确数据,保证高效率运作等。

1.4 新系统的总体结构及可行性分析

1.4.1系统总体结构

旅游管理系统由登陆窗体、主窗体、用户管理窗体、导游信息管理窗体、线路信息管理窗体、游客信息管理窗体、排团信息管理窗体、查询管理窗体、帮助窗体、三个打印窗体共十二个窗体组成。 (1)用户管理窗体

数据表项目:用户名、密码、权限。

通过导航器来实现用户信息的添加、删除、修改和保存。 (2)导游信息管理窗体

数据表项目:导游编号、姓名、性别、身份证号码、电话、地址、任职时间、级别、备注。

通过导航器来实现导游信息的添加、删除、修改和保存。 (3)线路信息管理窗体

数据表项目:线路编号、旅游路线、市场价格、本店价格、预订。 通过导航器来实现线路信息的添加、删除、修改、保存和打印。 (4)游客信息管理窗体 数据表项目:游客编号、姓名、性别、身份证号码,联系方式、地址、是否交款、会员。

通过导航器来实现游客信息的添加、删除、修改、保存和打印。 (5)排团信息管理窗体 数据表项目:团队编号、导游编号、开始时间、旅游天数、跟团人数、旅游路线。 通过导航器来实现排团信息的添加、删除、修改、保存和打印。

(6)查询管理窗体 第一页 导游查询

按“编号、姓名、性别、级别”进行查询,通过“查询、清空”来实现。 还可浏览全部数据,并对数据按不同的内容和方法进行排序。

第二页 线路查询

按“编号、本店价格”进行查询,通过“查询、清空”来实现。 还可浏览全部数据,并对数据按不同的内容和方法进行排序。

第三页 游客查询

按“编号、姓名、性别、是否交款、会员”进行查询,通过“查询、清空”来实现。

还可浏览全部数据,并对数据按不同的内容和方法进行排序。

第四页 排团查询

按“团队编号、导游编号、线路编号、旅游天数”进行查询,通过“查询、清空”来实现。

还可浏览全部数据,并对数据按不同的内容和方法进行排序。

1.4.2可行性分析

1.4.2.1系统开发的必要性

由于旅游线路的增加和参团人员的增多和复杂性,旧的管理系统的处理能力和管理方法很难满足现代化企业管理的需求,旧系统已成为实现企业战略目标的主要障碍。所以,我们认为开发新的旅游管理系统是必要的。 1.4.2.2经济可行性 (1)费用估算

新的旅游管理系统只需在现有电脑上安装即可,不需购买新设备。此外人员培训过程较简单,培训费用低。系统开发成本低,运行费用与以前比较基本不变。

(2)效益估算

据了解,已采用新的旅游管理信息系统的企业的年收益比以前提高10%,并且提高了管理水平,解放了繁重的体力劳动和脑力劳动,使企业情报畅通从而增加判断决策的正确性,极大的改善了用户服务的质量,提高了旅行社的信誉。

通过以上分析比较可以得出,开发新旅游管理系统的综合效益要远远大于成本,因此,在经济上是可行的。 1.4.2.3技术可行性

本旅游管理系统只需在电脑上安装DELPHI7.0即可,而且人员配备只要掌握DELPHI7.0即可,所以技术上也是可行的。 1.4.2.4组织管理可行性

公司领导和部门主管对于开发此系统十分支持,态度也很坚决。管理人员也很配合新系统的开发,积极参加开发工作。目前,公司拥有较为稳定、合理的管理制度与管理方法,有利于提高管理效率,实现管理工作的现代化。

新系统的开发不会导致组织的变动,只是对现有人员工作方式的一种改变。管理人员只需要在新接触时期进行熟悉就会很快适应。

1.4.2.5环境可行性

从外部环境看,问卷调查显示客户十分支持新系统开发,而且不会引起法律责任问题。外部环境的可能变化对新系统开发的影响微乎其微。

二 旅游管理系统分析

2.1业务流程分析

所谓业务流程指的是某业务活动的工作过程。

2.1.1总体业务流程

通过对新天地旅行社当前业务的详细调查,同时结合我们所学的设计理论和方法,总结出该旅行社的总体业务流程。(如图2.1.1.1)

图2.1.1.1 旅游业务总体流程图

2.1.2具体业务流程

该旅游管理系统是针对外联销售部门制作的,涉及的日常业务主要包括用户管理、信息管理及查询管理三大部分。其中:

(1) 用户管理的目的主要是管理使用者的使用权限。

(2) 信息管理包含导游信息管理、线路信息管理、游客信息管理和排团信息管理。其目的主要是对导游、线路、游客和排团信息进行记录,并能按要求进行添加、修改、删除和打印。

(3) 查询管理的目的主要是可以对导游信息、游客信息、线路信息和排团信息按照不同的方式方便地进行查询和对数据进行排序。

业务流程图就是用一些尽可能少的规定的符号及连线来表示某个具体业务处理过程。此旅游管理系统的业务流程表示旅行社的相关工作人员对参团游客进行登记,对旅游线路修改或新增等变更登记,并结合线路和游客登记情况进行排团。最终得出游客信息表,线路信息表和排团计划表。(具体业务流程图见图2.1.1.2)

图2.1.2.1 旅游管理系统业务流程图

2.2 数据流程分析

数据流程分析是把数据在组织(或原系统)内部的流动情况抽象地独立出来,舍去具体的组织结构、信息载体、处理工作、物资、材料等,单从数据流动过程来考查实际业务的数据处理模式,主要包括对信息的流动、传递、处理、存储等的分析。

数据流程分析是通过数据流程图(Data Flow Diagram,简称DFD)来实现的。 数据流程图是描述系统数据流程的主要工具,它是用图形符号综合地描述信息在系统中流动、处理和存储情况的图。数据流程图具有抽象性和概括性的特征。数据流程图的基本符号有四个,即数据流、处理逻辑、数据存储和外部实体。绘制数据流程图时首先要明确系统的边界,画出顶层DFD,再对数据流程图进行分解和细化。

图2.2.1是旅游管理系统的顶层DFD,图2.2.2是系统的第一层DFD。

图2.2.1 旅游管理系统的顶层DFD

D1 游客信息表 D2 线路信息表

图2.2.2 旅游管理系统的第一层DFD

2.3 数据字典

数据字典(Data Dictionary,DD)是在系统数据流程图的基础上进一步定义和描述数据的工具。它包括对一切动态数据和静态数据的数据表结构和相互关系等的说明,是数据分析和数据管理的重要工具,也是系统设计阶段进行数据库设计的重要参考依据。DD有两种:手工卡片形式和自动化方式,卡片式DD共有六种:数据流卡片、数据结构卡片、数据存储卡片、数据项卡片、处理逻辑卡片和外部实体卡片。

2.3.1 数据项卡片

分析数据特性应从静态和动态两方面进行,在DD中,仅定义数据的静态特性,具体包括:

1 数据项编号:102-01 2 数据项编号:103-01 数据项名称:导游编号 数据项名称:线路编号 别 名:导游编号 别 名:线路编号

简 述:某导游的代码 简 述:某旅游线路的代码 类别及宽度:字符型,5位 类别及宽度:字符型,4位

取值 范围:G0001-G9999 取值范围:I001-I999,A001-A999

3 数据项编号:104-01 4 数据项编号:105-01 数据项名称:游客编号 数据项名称:团队编号 别 名:游客编号 别 名:团队编号 简 述:某游客的代码 简 述:某团队的代码 类别及宽度:字符型,5位 类别及宽度:字符型,3位 取值 范围:T0001-T9999 取值 范围:001-999

2.3.2 数据流卡片

数据流卡片用于分析数据流程图中数据的流动情况,对一个数据流程图来说,有多少个数据流就有多少个数据流卡片,定义数据流卡片时,不仅要说明数据流的名称、组成等,还应指明它的来源、去向和数据流量等。

1数据流编号:F1 数据流名称:合同

简 述:游客与旅行社签订的合同 数据流来源:游客 数据流去向:P1

高峰 流量:200份/天

数据流组成:游客编号、姓名、性别、身份证号码,联系方式、地址、

是否交款、会员。

2数据流编号:F2

数据流名称:销售统计表

简 述:外联销售部每天的收入情况 数据流来源:P1 数据流去向:财务科 流 量:1份/天

数据流组成:游客编号、单价、总金额、折扣率、日期、经办人。

3数据流编号:F3

数据流名称:排团计划表

简 述:对游客进行团队编排的情况 数据流来源:P2 数据流去向:游客

高峰 流量:200份/天

数据流组成:团队编号、导游编号、开始时间、旅游天数、跟团人数、 旅游路线。

4数据流编号:F4

数据流名称:排团计划表

简 述:对游客进行团队编排的情况 数据流来源:P2

数据流去向:计调部门

数据流组成:团队编号、导游编号、开始时间、旅游天数、跟团人数、

旅游路线。

2.3.3数据结构卡片

数据结构卡片是由若干数据项组合,它描述了某些数据项之间的关系。一个数据结构可由若干个数据项组成,也可以由若干个数据结构组成,还可以由若

干个数据项和数据结构组成。

数据结构卡片

数据结构名称:用户管理卡片

数据结构简述:登记系统用户信息时所记录的卡片 数据结构的组成:姓名、密码、用户权限

2.3.4数据存储卡片

数据存储卡片主要用于描述数据存储的结构、有关的数据流和查询要求。 1数据存储卡片 编号:D1

文件名:游客信息表

简述:存储游客基本信息的表

组成:游客编号、姓名、性别、身份证号码,联系方式、地址、是否

交款、会员。

有关的数据流:P1-D1,D1-P2 有无立即查询要求:有

2数据存储卡片

文件名:线路信息表

简述:存储旅游线路的具体信息的表

组成:线路编号、旅游路线、市场价格、本店价格、预订 有关的数据流:P2-D2 有无立即查询要求:有

3数据存储卡片

文件名:导游信息表

简述:存储导游的基本信息的表

组成:导游编号、姓名、性别、身份证号码、电话、地址、任职时间、

级别、备注。

有关的数据流:D3-P2 有无立即查询要求:有

2.3.5处理逻辑卡片

对DFD中最底层的处理逻辑编写处理逻辑卡片,包括编号、名称、输入的数据流、输出的数据流和对其功能的描述。

1编号:P1

名称:游客信息处理 简述:处理游客信息

输入:游客编号、姓名、性别、身份证号码,联系方式、地址、是否交

款、会员。

输出:游客信息表,销售统计表

处理:根据游客填写好的合同登记游客信息表,并对当天的营业额进行

统计,上报财务科。

2编号:P2

名称:排团处理

简述:对游客进行团队编排。

输入:游客信息、线路信息、导游信息。 输出:排团计划表 处理:将游客信息、旅游线路和导游信息进行汇总,合理安排排团计划,

最终输出排团计划表。

2.3.6外部实体卡片

主要用来描述外部实体的有关信息。通常包括:外部实体编号、外部实体名称、简述、输入数据流、输出数据流等。 1外部实体

名称:游客 简述:旅行者

输入的数据流:排团计划表 输出的数据流:合同

2外部实体 名称:财务科 简述:无

输入的数据流:销售统计表 输出的数据流:无

3外部实体

名称:计调部门

简述:负责安排接待(房、餐、车、景点)等事宜 输入的数据流:排团计划表 输出的数据流:无

三 旅游管理系统设计

3.1 系统设计的任务及原则

3.1.1 任务

将系统分析阶段得到的新系统的逻辑模型转换为新系统的物理模型,并编写系统设计说明书。

3.1.2原则

系统性:系统是作为统一整体存在的,因此,系统设计中界面风格要一致,操作

方法一致,系统的代码要统一,各个模块调用的数据要有关联性,如排团信息模块调用游客编号一定要从游客信息表中读取。

灵活性:为保持系统的长久生命力,要求系统有很强的环境适应性,在游客、线

路、导游、排团等基本信息中不包括查询功能,使查询自成为一个模块,有助于今后的修改和增加新的内容。

可靠性:具有权限控制,在一定程度上保护了数据库的安全性和完整性。

经济性:在硬件上不盲目追求技术的先进性,满足需求即可,模块要尽量简单,

以便缩短处理时间,减少处理费用。

3.2 系统总体结构设计

3.2.1 系统功能描述

本系统主要包括用户管理、信息管理和查询管理三个模块。系统的功能模块示意图,如图3.2.1.1:

图3.2.1.1旅游管理系统的功能模块示意图

(1) 用户管理:主要是对使用该系统的工作人员信息进行管理,包括用户名、密码和使用权限。并能按要求通过添加、删除、编辑对信息进行修改。

(2) 信息管理:该模块下包含了四个子模块,分别为:导游信息管理,线路信息管理、游客信息管理和排团信息管理。它们都可进行添加、删除、编辑的操作。其中线路信息、游客信息和排团信息还可根据需要打印。

(3) 查询管理:该模块可对导游、线路、游客和排团信息进行查询。查询的方式可以有多种,如对导游查询,可以通过编号、姓名、性别和级别,还可对表中数据按姓名、编号、级别进行升序、降序排列。

3.3 代码设计

合理的编码结构是信息处理系统是否具有生命力的一个重要因素,在设计代码时逻辑上必须能够满足用户的需要,在结构上应当与处理的方法相一致。代码要系统化,一个代码应唯一标志它所代表的事物和属性,在代码设计时,要预留足够的位置,以适应不断变化的需要。本系统采用的是顺序码和层次码。

3.3.1 部门编号代码(2位)

采用顺序码进行编码: 01 外联销售部门 02 财务科 03 计调部门 04 旅游接待部门

3.3.2旅游线路代码(4位)

格式为I000或A000,其中I表示国内旅游线路,A表示国际旅游线路。 例如:I001为“苏州、南京、无锡、上海四日游”,A001“欧洲风情7日游”。

3.3.3人员代码(5位)

格式为T0000或G0000,其中T表示游客,G表示导游。 例如:T0001表示游客张三,G0001表示导游李四。

3.3.4合同代码(10位)

采用层次码进行编码:

合同中字段“受理编号”的格式为C000000000,C代表该编号为游客与旅行社签订的合同,C后4位0000代表旅游线路编号,最后5位代表游客编号。

例如:C A001T0001为游客张三与旅行社签订的“欧洲风情7日游”的合同代码。

3.3.5排团代码(3位)

格式为000,采用顺序码编排。 例如:005表示第五旅行团。

3.4 数据库设计

数据库设计包括分析数据库需求、概念数据库设计、逻辑数据库设计和数据库实现四部分。

3.4.1概念数据库设计

数据库概念结构的设计具有一定的独立性,通常采用E-R图的方法进行设计。 本旅游管理系统的E-R图见下:

图3.4.1.1 系统E-R图

3.4.2 数据库逻辑结构设计

根据系统设计的要求对数据库的逻辑结构进行设计。设计时既要考虑到前面系统设计阶段提出的需求,又要考虑到数据库设计的一些规则,如关键字的设置和外键的设置等。本系统后台数据库管理系统所采用的是Database Desktop数据库工具。

3.5 输出/输入设计

输出/输入设计要确定输出什么数据和以什么方式输出,输入设计要确定如何录入数据,并在满足要求的前提下尽量减少输入数据的数量。输出设计是对输入数据进行加工和处理的结果,输出的内容和格式必须满足用户的需求。另外,还有一些数据参照完整性的输入限制,这个问题只要在功能代码完成后再在接受输入前判断输入的格式和值的大小就可以实现。本系统的输出数据主要为排团计划表,查询输出的数据来源来自对基本表的SQL查询。

3.5.1输入设计

目标:提高效率,和减少错误 输入工具:键盘输入,鼠标输入

数据校验方法:静态校验

3.5.2输出设计

输出设备: 显示器,打印机。

该报表可以根据不同的选择显示不同信息(全部或者部分信息)。

3.6 系统物理配置方案

3.6.1. 计算机硬件选择

CPU:Pentium 4,600 MHz 以上; 内存:256M 以上; 硬盘:60GB以上; 输入:鼠标,键盘; 输出:打印机,显示屏;

3.6.2.计算机软件配置

操作系统:windows Server 2000或以上; 数据库选择:Database Desktop 开发平台:Delphi7.0

3.6.3.计算机网络的选择 局域网

网络拓扑结构:星型;

四 旅游管理系统实施

4.1 系统开发环境

系统开发工具DELPHI7.0

Delphi作为一种可视化的编程环境,提供了方便、简介的Windows应用程序开发工具。

Delphi使用了Microsoft Windows 图形用户界面的许多先进特性和设计思想,采用了可重复利用的完整的面向对象的程序语言,是当今最快的编辑器,拥有领先的数据库技术。

4.2 模块功能实现

4.2.1 创建数据库并建立数据库别名

启动BDE—object菜单选择new,在BDE目录树左侧出现一个新的分支,输入数据库别名(例:ly),在右侧面板上path栏电击小按钮,查到数据库所在目录(E:\旅游管理系统\data),回到object菜单中选择apply保存即刻。

图4.2.1是旅游管理系统BDE Adminstrator截图

图4.2.1:旅游管理系统BDE Adminstrator截图

4.2.2 窗体及代码设计

1.创建工程ly.dpr 2.登录窗体

新建窗体,窗体的name属性改为loginform(单元文件名为login.pas),caption属性改为:登录窗体

图4.2.2 登录窗体

用户操作说明:当用户名或密码输入错误时,系统会弹出对话框提示重新输入。 代码:

implementation uses main; {$R *.dfm}

//单击“确定”按钮

procedure TLoginForm.Button1Click(Sender: TObject);

begin

with q_yh do begin

close; //关闭yh数集 sql.Clear; //清除

sql.Add('select * from yh where 用户名=:a and 密码=:b');

parambyname('a').asstring:=trim(edit1.Text); //在edit1中输入用户名

parambyname('b').AsString:=trim(edit2.text); //在edit2中输入密码 open; //打开 end;

if q_yh.recordcount>0 then mainform.show else

showmessage('用户名或密码错误,请再输入'); end;

//单击“取消”按钮

procedure TLoginForm.Button2Click(Sender: TObject); begin close; //关闭 end; end.

3.主窗体

设计如图所示界面(mainform,单元文件名为main.pas)。caption属性改为“主窗体”,用label实现显示其他窗体的功能。

图4.2.3 主窗体

用户操作说明:

用户单击前六个标签就可进入相应窗体进行操作。单击“退出”

则退出主窗体,进入登录窗体重新登录。 代码:

implementation

uses yhglc, dyxxgl, xlxxgl, ykxxgl, ptxxgl, cxgl,login; {$R *.dfm}

//单击“用户管理”,进入用户管理窗体

procedure TMainForm.Label1Click(Sender: TObject); begin

yhglForm.show; end;

//单击“导游信息管理”,进入导游信息管理窗体

procedure TMainForm.Label2Click(Sender: TObject); begin

dyxxglForm.show; end;

//单击“线路信息管理”,进入线路信息管理窗体

procedure TMainForm.Label3Click(Sender: TObject); begin

xlxxglForm.show; end;

//单击“游客信息管理”,进入游客信息管理窗体

procedure TMainForm.Label4Click(Sender: TObject); begin

ykxxglForm.show; end;

//单击“排团信息管理”,进入派团信息管理窗体

procedure TMainForm.Label5Click(Sender: TObject); begin

ptxxglForm.show; end;

//单击“查询管理”,进入查询管理窗体

procedure TMainForm.Label6Click(Sender: TObject); begin

cxglForm.show; end;

//单击“退出”,退出主窗体

procedure TMainForm.Label7Click(Sender: TObject); begin close;

loginForm.edit1.text :=''; loginForm.edit2.text :=''; end; end.

4.用户管理窗体

创建窗体yhglform(单元文件名为yhglc.pas)。该窗体包含一个table组键和导航器,可方便地对用户进行操作。

图4.2.4 用户管理窗体

用户操作说明:操作人员通过导航器对用户表进行“添加、删除、修改、保存”。 本窗体无代码。

5. 导游信息管理窗体

创建窗体dyxxglForm(单元文件名为dyxxgl.pas)。该窗体包含一个table组键和导航器,可方便地对导游信息进行操作。

图4.2.5 导游信息管理窗体

用户操作说明:操作人员通过导航器对导游信息表进行“添加、删除、修改、保存”。

本窗体无代码。

6. 线路信息管理

创建窗体xlxxglForm(单元文件名为xlxxgl.pas)。该窗体包含一个table组键和导航器,可方便地对旅游线路信息进行操作。

图4.2.6 线路信息管理窗体

用户操作说明:操作人员通过导航器对线路信息表进行“添加、删除、修改、保存”。单击“打印”按钮,生成打印报表。 代码:

implementation uses xlxxdy; {$R *.dfm}

//单击“打印”,显示打印报表

procedure TxlxxglForm.BitBtn3Click(Sender: TObject); begin

xlxxReportForm.show; end; end.

7. 线路信息打印窗体

在“组件面板”中添加QReport,创建窗体xlxxReportForm(单元文件名为xlxxdy.pas)。在窗体中添加QuickRep1并更改其相关属性。

图4.2.7 线路信息打印窗体

用户操作说明:单击线路信息窗体中的“打印”按钮,产生该报表。该报表显示的信息为“线路信息表”(xlxx.db)中的数据。 代码:

implementation uses xlxxgl; {$R *.dfm}

//显示报表

procedure TxlxxReportForm.FormShow(Sender: TObject); begin

quickrep1.Preview; end; end.

8.游客信息管理窗体

创建窗体ykxxglForm(单元文件名为ykxxgl.pas)。该窗体包含一个table组键和导航器,可方便地对游客信息进行操作。

图4.2.8 游客信息管理窗体

用户操作说明:操作人员通过导航器对游客信息表进行“添加、删除、修改、保存”。单击“打印”按钮,生成打印报表。 代码:

implementation uses ykxxdy; {$R *.dfm}

//单击“打印”,显示打印报表

procedure TykxxglForm.BitBtn4Click(Sender: TObject); begin

ykxxReportForm.show; end; end.

9.游客信息打印窗体

创建窗体ykxxReportForm(单元文件名为ykxxdy.pas)。在窗体中添加QuickRep1并更改其相关属性。

图4.2.9 游客信息打印窗体

用户操作说明:单击线路信息窗体中的“打印”按钮,产生该报表。该报表显示的信息为“游客信息表”(ykxx.db)中的数据。 代码:

implementation uses ykxxgl; {$R *.dfm}

//显示报表

procedure TykxxReportForm.FormShow(Sender: TObject); begin

quickrep1.preview; end; end.

10.排团信息管理窗体

创建窗体ptxxglForm(单元文件名为ptxxgl.pas)。该窗体包含一个table组键和导航器,可方便地对排团信息进行操作。

图4.2.10 排团信息管理窗体

用户操作说明:操作人员通过导航器对排团信息表进行“添加、删除、修改、保存”。单击“打印”按钮,生成打印报表。 代码:

implementation uses ptxxdy; {$R *.dfm}

//单击“打印”,显示打印报表

procedure TptxxglForm.BitBtn4Click(Sender: TObject); begin

ptxxReportForm.show; end; end.

11.排团信息打印窗体

创建窗体ptxxReportForm(单元文件名为ptxxdy.pas)。在窗体中添加QuickRep1并更改其相关属性。

图4.2.11 排团信息打印窗体

用户操作说明:单击排团信息窗体中的“打印”按钮,产生该报表。该报表显示的信息为“排团信息表”(ptxx.db)中的数据。 代码:

implementation uses ptxxgl; {$R *.dfm}

//显示报表

procedure TptxxReportForm.FormShow(Sender: TObject); begin

quickrep1.preview; end; end.

12.查询窗体

创建窗体cxglForm(单元文件名为cxgl.pas)。在窗体中添加pagecontrol组件并新建四页,并更改其相关属性。 (1) 导游查询

图4.2.12 查询管理窗体--导游查询

用户操作说明:用户可以按编号、姓名、性别、级别分别对导游信息进行查询,清空按钮用来清除输入内容后可重新查询,还可浏览全部数据,并且对编号、姓名、性别进行升序、降序排列,先选排序内容再选排序方法。 代码: //查询

procedure TcxglForm.Button1Click(Sender: TObject); begin

with Q_dycx do begin

close; //关闭query组件

sql.Clear; //清除原来SQL属性内容

sql.Add('select * from dyxx where 导游编号=:a or 姓名=:b or 性别=:c or 级别=:d '); //添加新的SQL属性内容

parambyname('a').AsString:=edit1.Text;//将edit1输入内容赋值给a parambyname('b').AsString:=edit2.Text; //将edit2输入内容赋值给b parambyname('c').AsString:=combobox1.Text; //将combobox1输入内容赋值给c

parambyname('d').AsString:=combobox2.Text;// 将combobox2输入内容赋值给d

open; //执行语句 end;

end;

//清除

procedure TcxglForm.Button2Click(Sender: TObject); begin

edit1.Clear; //清除edit1中输入内容 edit2.Clear //清除edit2中输入内容

//浏览全部数据

procedure TcxglForm.CheckBox1Click(Sender: TObject); begin

if checkbox1.Checked then with Q_dycx do begin close;

sql.Clear;

sql.Add('select * from dyxx'); open; end; end;

//升序排序

procedure TcxglForm.RadioButton1Click(Sender: TObject); var

context:string; begin

if (radiogroup2.ItemIndex=0)

then context:='导游编号' //按导游编号 else if (radiogroup2.ItemIndex=1)

then context:='姓名' //按姓名 else if (radiogroup2.ItemIndex=2)

then context:='级别'; //按级别

with Q_dycx do //更新查询 begin close;

sql.Clear ;

sql.Add('select * from dyxx order by '+context+' '); open; //开始查询 end; end;

//降序排序

procedure TcxglForm.RadioButton2Click(Sender: TObject); var

context:string; begin

if (radiogroup2.ItemIndex=0)

then context:='导游编号' //按导游编号 else if (radiogroup2.ItemIndex=1)

then context:='姓名' //按姓名 else if (radiogroup2.ItemIndex=2)

then context:='级别'; //按级别

with Q_dycx do //更新查询 begin close;

sql.Clear ;

sql.Add('select * from dyxx order by '+context+' desc '); open; //开始查询 end; end;

(2) 线路查询

图4.2.13 查询管理窗体--线路查询

用户操作说明:用户可以按线路编号、本店价格分别对线路信息进行查询,可以查询价格在一定范围之内的所有线路,清空按钮用来清除输入内容后可重新查询,还可浏览全部数据,并且对编号、路线、本店价格进行升序、降序排列,先选排序内容再选排序方法。 代码:

procedure TcxglForm.Button3Click(Sender: TObject); begin

if edit4.text'' then with Q_xlcx do begin

close; //关闭query组件

sql.Clear; //清除原来SQL属性内容

sql.Add('select * from xlxx where 线路编号=:a '); //添加新的SQL属性内容

parambyname('a').AsString:=edit4.Text; //将edit4输入内容赋值给a open; //执行语句 end;

if (combobox3.Text'') and (combobox4.Text'') then with Q_xlcx do begin

close; //关闭query组件

sql.Clear; //清除原来SQL属性内容

sql.Add('select * from xlxx where 本店价格 between :b and :c '); //添加新的SQL属性内容

parambyname('b').AsCurrency:=strtoCurr(combobox3.Text);//将combobox3输入内容赋值给b

parambyname('c').AsCurrency:=strtoCurr(combobox4.Text); //将combobox4输入内容赋值给c open; //执行语句 end; end;

//清除

procedure TcxglForm.Button4Click(Sender: TObject); begin

edit4.Clear; //清除edit4中输入内容 end;

//浏览全部数据

procedure TcxglForm.CheckBox2Click(Sender: TObject); begin

if checkbox2.Checked then with Q_xlcx do begin close;

sql.Clear;

sql.Add('select * from xlxx');

end; end;

//升序排序

procedure TcxglForm.RadioButton3Click(Sender: TObject); var

context:string; begin

if (radiogroup4.ItemIndex=0)

then context:='线路编号' //按线路编号 else if (radiogroup4.ItemIndex=1)

then context:='旅游路线' //按旅游路线 else if (radiogroup4.ItemIndex=2)

then context:='本店价格'; //按本店价格

with Q_xlcx do //更新查询 begin close;

sql.Clear;

sql.Add('select * from xlxx order by '+context+' '); open; //开始查询 end; end;

//降序排序

procedure TcxglForm.RadioButton4Click(Sender: TObject); var

context:string; begin

if (radiogroup4.ItemIndex=0)

then context:='线路编号' //按线路编号 else if (radiogroup4.ItemIndex=1)

then context:='旅游路线' //按旅游路线 else if (radiogroup4.ItemIndex=2)

then context:='本店价格'; //按本店价格

with Q_xlcx do //更新查询 begin close;

sql.Clear ;

sql.Add('select * from xlxx order by '+context+' desc '); open; //开始查询 end;

end;

(3) 游客查询

图4.2.14 查询管理窗体--游客查询

用户操作说明:用户可以按编号、姓名、性别、会员以及交款分别对游客信息进行查询,清空按钮用来清除输入内容后可重新查询,还可浏览全部数据,并且对编号、姓名、会员、交款进行升序、降序排列,先选排序内容再选排序方法。 代码:

//查询

procedure TcxglForm.Button5Click(Sender: TObject);

begin

with Q_ykcx do

begin

close; //关闭query组件

sql.Clear; //清除原来SQL属性内容

sql.Add('select * from ykxx where 游客编号=:a or 姓名=:b or 性别=:c or 会员=:d or 是否交款=:e'); //添加新的SQL属性内容

parambyname('a').AsString:=edit5.Text; //将edit5输入内容赋值给a parambyname('b').AsString:=edit6.Text; //将edit6输入内容赋值给b parambyname('c').AsString:=combobox5.Text; //将combobox5输入内容赋值给c

parambyname('d').AsString:=combobox6.Text; //将combobox6输入内容赋值给d

parambyname('e').AsString:=combobox7.Text; //将combobox7输入内容赋值给

e

open; //执行语句

end;

end;

//清除

procedure TcxglForm.Button6Click(Sender: TObject);

begin

edit5.Clear; //清除edit5中输入内容

edit6.Clear; //清除edit6中输入内容

//浏览全部数据

procedure TcxglForm.CheckBox3Click(Sender: TObject);

begin

if checkbox3.Checked then

with Q_ykcx do

begin

close;

sql.Clear;

sql.Add('select * from ykxx');

open;

end;

end;

//升序排序

procedure TcxglForm.RadioButton5Click(Sender: TObject);

var

context:string;

begin

if (radiogroup6.ItemIndex=0)

then context:='游客编号' //按游客编号

else if (radiogroup6.ItemIndex=1)

then context:='姓名' //按姓名

else if (radiogroup6.ItemIndex=2)

then context:='会员' //按会员

else if (radiogroup6.ItemIndex=3)

then context:='是否交款'; //按是否交款

with Q_ykcx do //更新查询

begin

close;

sql.Clear ;

sql.Add('select * from ykxx order by '+context+' ');

open; //开始查询

end;

end;

//降序排序

procedure TcxglForm.RadioButton6Click(Sender: TObject);

var

context:string;

begin

if (radiogroup6.ItemIndex=0)

then context:='游客编号' //按游客编号

else if (radiogroup6.ItemIndex=1)

then context:='姓名' //按姓名

else if (radiogroup6.ItemIndex=2)

then context:='会员' //按会员

else if (radiogroup6.ItemIndex=3)

then context:='是否交款'; //按是否交款

with Q_ykcx do //更新查询

begin

close;

sql.Clear ;

sql.Add('select * from ykxx order by '+context+' desc ');

open; //开始查询

end;

end;

图4.2.15 查询管理窗体--排团查询

用户操作说明:

用户可以按团队编号、导游编号、线路编号、旅游天数以及开始

时间分别对排团信息进行查询,可以查询开始时间在一定范围之内的所有旅游线路,清空按钮用来清除输入内容后可重新查询,还可浏览全部数据,并且对团队编号、导游编号、开始时间进行升序、降序排列,先选排序内容再选排序方法。 代码:

//查询

procedure TcxglForm.Button7Click(Sender: TObject);

begin

if (edit7.text'') or (edit8.text'') or (edit9.Text'') then with Q_ptcx do

begin

close; //关闭query组件

sql.Clear; //清除原来SQL属性内容

sql.Add('select * from ptxx where 团队编号=:a or 导游编号=:b or 线路编号=:c ');//添加新的SQL属性内容

parambyname('a').AsString:=edit7.Text; //将edit7输入内容赋值给a parambyname('b').AsString:=edit8.Text; //将edit8输入内容赋值给b parambyname('c').AsString:=edit9.Text; //将edit9输入内容赋值给c open; //执行语句

end;

if edit10.text'' then

with Q_ptcx do

begin

close; //关闭query组件

sql.Clear; //清除原来SQL属性内容

sql.Add('select * from ptxx where 旅游天数=:d ');

parambyname('d').Asinteger:=strtoint(edit10.Text);//将edit10输入内容赋值给d

open; //执行语句

end;

end;

//清除

procedure TcxglForm.Button8Click(Sender: TObject);

begin

edit7.Clear; //清除edit7中输入内容

edit8.Clear; //清除edit8中输入内容

edit9.Clear; //清除edit9中输入内容

edit10.Clear; //清除edit10中输入内容

end;

//浏览全部数据

procedure TcxglForm.CheckBox4Click(Sender: TObject);

begin

if checkbox4.Checked then

with Q_ptcx do

begin

close;

sql.Clear;

sql.Add('select * from ptxx');

open;

end;

end;

//升序排序

procedure TcxglForm.RadioButton7Click(Sender: TObject);

var

context:string;

begin

if (radiogroup8.ItemIndex=0)

then context:='团队编号' //按团队编号

else if (radiogroup8.ItemIndex=1)

then context:='导游编号' //按导游编号

else if (radiogroup8.ItemIndex=2)

then context:='开始时间' ; //按开始时间

with Q_ptcx do //更新查询

begin

close;

sql.Clear ;

sql.Add('select * from ptxx order by '+context+' ');

open; //开始查询

end;

end;

//降序排序

procedure TcxglForm.RadioButton8Click(Sender: TObject);

var

context:string;

begin

if (radiogroup8.ItemIndex=0)

then context:='团队编号' //按团队编号

else if (radiogroup8.ItemIndex=1)

then context:='导游编号' //按导游编号

else if (radiogroup8.ItemIndex=2)

then context:='开始时间' ; //按开始时间

with Q_ptcx do //更新查询

begin

close;

sql.Clear ;

sql.Add('select * from ptxx order by '+context+' desc ');

open; //开始查询

end;

end;

end.

4.3 系统运行与调试

系统运行良好,满足了系统开发目的。

五 系统评价

5.1旅游管理系统优点

本旅游管理系统分编辑和查询分析两大功能,便于对旅行社的游客、导游人员以及旅游线路进行管理,对团队进行编排,为用户,部分管理层和领导提供编辑和查询分析功能。报表是对信息的统计分析,能够清晰准确地了解旅行社的经营和人员管理现状,界面符合界面设计相关标准。我们给系统留有很的扩展空间,系统的可扩展性,可运行性,可维护性和可移植性强。总之,它极大地提高了业务信息记录、编排等信息管理的工作效率。

该系统业务流程符合旅行社实际运行情况,设计思路较清晰,因果逻辑严密,数据的来源可靠,操作简单,又不失一定的实用性,基本实现了旅行社日常业务管理作信息处理与系统管理的系统目标 。

5.2旅游管理系统缺点

由于时间比较紧迫和我们自己知识的欠缺,导致系统在设计上难免存在缺憾。作为一个小型系统,本系统仍然有很多地方值得改进。例如:

1.在设计数据库方面,在实际的应用中可能还需要更多更复杂的表,例如财务统计表,计数器表等。

2.在登录系统部分,虽然对用户进行了权限分类,但并没有对不同权限的操作范围进行限制。

3.本系统还没使工作人员彻底脱离手工操作,仍需改进。

总结:

通过实际操作,我们体会到了Delphi在编写数据库程序方面的功能非常强大,而且非常人性化,大部分功能在简单的拖拉控件的过程中已经实现。总的来说,考虑最多的是充分做到灵活,让用户自定义,做到易于扩展,便于维护。在编程的过程中我们还有一点体会,统一的编程风格,严格遵守的编程规范,会使自己在编写代码中更加轻松,效率也更高。

经过我们组成员不断努力,我们最终完成了旅游管理系统的全部设计过程,并且使该系统达到了可实际应用的程度。在本次管理信息系统的设计过程中,我们始终坚持理论联系实践的原则。通过这次程序设计,加强了对实际问题的处理能力。虽然在技术上有欠缺,遇到了很多问题和困难,但通过老师的指导、同学间的讨论和我们自己所付出的努力,都将它一一克服了,并把所学的DATABASE DESKTOP,信息管理与信息系统,Delphi程序设计等结合在一起,做出了 “旅游管理系统”。通过本次实习,我们体会到了软件工程的开发思想,掌握了整个系统的逻辑关系,学习了模块的设计和实现过程。

本次的程序开发过程是一个不断趋于完善的过程,旅游管理系统功能得到完善,使用起来简洁方便,大幅度减少人力,物力,极大地提高旅游管理水平和管理效率。当然,随着公司的不断发展和壮大,这个软件肯定会不断得到更新,并与旅行社的其他部门管理系统相衔接,使旅行社的管理系统成为一个完善的整体。

关于我们,在系统设计和编写程序的过程中,真正体会到了想要开发一个好的管理系统是多么的不易。因为关于旅游管理系统的资料比较匮乏,需要靠我们自己的力量来完成90%以上的系统开发过程。


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn