一引言 随着计算机局域网和广域网的出现网络产品(包括软硬件)质量不断提高品种数量迅速增长和发展以及数据库技术的成熟和软件工程方法的发展各种计算机网络管理系统越来越完善旅游景点微机售票系统是计算机技术与网络技术相结合的产物方便快捷的查询统计使管理者能准确地掌握景点的经营情况并对售票人员进行监督管理并为其提供准确可信的决策依据其成功实现提高了旅游景点的售票效率和管理水平使一直由人工售票的局面划上句号从而进入智能化售票的新阶段
本文介绍以Delphi为开发语言Microsoft SQL Server 为后台运行于Windows NT 的旅游景点微机售票系统的开发方法该系统适合各大中小旅游景点售票系统的自动化管理具有较强的实际推广应用价值
二系统总体方案设计
微机售票系统采用星形拓扑局域网结构由服务器集线器计算机打印机组成见图服务器上运行数据库及系统管理程序实现查询统计报表打印系统维护等功能各售票微机与相应的打印机放置在售票窗口运行售票程序完成界面输入门票打印及售票员个人信息查询统计等功能
对于售票系统来说打印机的速度和数据通过网络的传输速度是非常关键的指标如秦皇岛野生动物园在其高峰期每天有大约万人入园游览要求使用三台微机进行售票而入园客人大都集中在同一段时间如早晨刚开园到上午点左右下午点~点之间等所以减少游客排队等候时间加快售票速度就是微机售票系统必须解决的问题影响售票速度有两方面因素一是硬件打印机的打印速度二是打印程序启动打印和传输数据的速度经实际测试EPSON stylus color 彩色喷墨打印机其打印速度为A纸页/分钟能够满足要求
在程序方面为了满足打印速度的要求经过测试和精心选择确定用Delphi做为程序设计语言Delphi把强大的对象Pascal语言和快捷便利的RAD相结合是一个通用的图形用户界面(GUI)开发工具它是基于可视化和组件的概念而设计出来的而且能非常方便地操纵数据库及实现各种报表使得编程迅速且是目前调试编译速度最快的编程语言之一在门票打印时直接调用Delphi的类Printers中的各种过程和函数如PrintersCanvasTextout(x:integer;y:integer;const Text:string)再结合其他的过程和函数即可实现快速打印解决了程序打印速度的问题
系统选择SQL Sever做为数据库SQL Sever是一个客户机/服务器关系型数据管理系统(RDBMS)使用TransactSQl在客户机和SQL Sever之间发送请求能够满足系统的网络传输要求Delphi中可以通过BDE(数据库引擎)和ODBC进行数据库访问或者通过ADO直接进行数据库访问
另外在总的程序设计时考虑到使用本系统的操作员素质参差不齐计算机操作水平相对较低所涉及的操作要尽可能简单尽量少输入信息尽量使用下拉框和选择框避免出错本系统操作员要输入的只有游客人数(成人和小孩或学生)和车辆数其他信息如票价程序启动时从数据库中自动调出时间取自系统时间总价由计算机自动生成界面简单操作容易易学易用
三系统软件总体设计
数据库表设计
系统数据库中共有零售票信息表密码表操作员信息表票价信息表以及为统计查询建造的视图等以零售票信息表为例介绍表的结构其字段定义如表所示
序列号由售票员的标识符号随机号和微机售票开始的票数记录组成如GK代表标识号为G的售票员随机号为K第张票
退票否此字段用来标识票是否有效若有效则为无效为
软件结构设计
系统软件设计遵循模块化程序设计的思想自顶向下步步求精系统程序由系统管理模块和售票模块组成售票模块运行在售票微机上系统管理模块运行在服务器上
四系统主要功能特性及实现方法
系统主要模块登录及密码输入模块系统主界面输入模块统计查询报表打印模块门票打印模块下面分述各模块的功能以及关键部分的实现
登录及密码输入模块
登录及密码输入模块用于限制操作员的权限程序完成的功能从界面上取出密码查询数据库密码表有相同密码操作员有权进入下一界面三次输入失败程序自动退出另外在售票模块中根据密码要取出对应的操作员的名字以便将售票信息与操作员相关联从数据库中根据输入密码取相应的操作员函数如下其中handletbl为密码表名称idhandlenamehandlecode为表中字段代表编号操作员姓名操作员密码
function TFormPswdgethandlename(code:String):String;
var name:String;
begin
name:=;
QueryClose;
QuerySQLClear;
QueryDisableControls;
QuerySQLAdd(Select idhandlenamehandlecode from handletbl);
QueryOpen;
if Querylocate(handlecodecode[]) then
begin
name:=queryFieldByName(handlename)AsString;
end;
Queryclose;
Result:=name;
end;
系统主界面输入模块
系统的主界面输入模块用于输入和显示售票信息根据其信息和票价自动计算出游客的总人数以及票价在此模块中要求操作员只输入游客人数按确定即可自动计算和显示总价按打印则打印门票为了防止操作员误输入除整型数据以外的其他字符如AB等而导致程序出错程序中在需要数据输入的Tedit位置设置判断条件只允许整型数据输入
统计与查询报表打印模块
统计与查询报表打印模块用于实现售票信息的统计与查询可以设定起止日期等信息并可生成报表打印统计与查询用内嵌的SQL查询语言实现报表使用Delphi的快速报表组件Qreport部件组中的各种控件
门票打印模块
门票打印模块实现门票的打印输出功能在门票打印中需根据门票的样式确定输出的位置为了实现快速打印在打印时直接调用printers的过程和函数
打印的过程如下
procedure printmsg(thesyqoTotalpeopleadultNum childNumTotalcarbigcarmiddlecarminicartotalmoney prtdate:String);
begin
PrinterCanvasFontCharset := GB_CHARSET;
PrinterBeginDoc;
PrinterPageHeight;
PrinterPageWidth;
PrinterCanvasFontSize :=;//字体设置
……//根据用户需要插入要打印的内容
PrinterCanvasTextOut(x+ythesyqo);//打印内容
PrinterEndDoc;
end;
退票管理模块
实际的售票过程中涉及到由于各种原因游客退票的情况而计算机打印售出的门票及相关信息已经存入数据库中当有退票情况发生时必然存在操作员售票金额与数据库查询结果不一致的现象为了解决这一现象增加了退票管理模块