APP下载

影院售票系统开发中的问题与处理技术

2010-06-22孙朝云陈宁宁

现代电子技术 2009年22期
关键词:窗体数据表字段

孙朝云 陈宁宁 赵 轲

摘 要:基于影院售票科学化管理要求,设计影院自动售票系统,给出系统设计的主体结构。系统以Delphi 7.0为前端开发工具,采用模块化设计方法,遵循使用的方便性、安全性和灵活性原则,完成售票系统现代化、可视化管理功能的要求,很好地实现了售票功能。给出了系统开发中遇到的问题及具体解决方法。对于采用Delphi开发系统的使用者具有重要的参考价值。

关键词:售票系统;数据安全;组合列表框;Rave 5.0计算机

中图分类号:TP311

0 引 言

随着现代计算机技术和网络技术的飞速发展,设计可靠、便捷、高效的计算机管理售票系统代替传统的售票方式越来越受到人们的重视。方便、可视、快捷的查询、统计能使管理者实时准确地掌握影院的经营状况,并对售票人员进行监督和管理,亦为高级管理人员提供了准确、科学的决策依据。采用智能化售票提高了电影院的售票效率和管理水平。在此针对影院售票工作、管理与发展要求,给出了影院售票系统设计结构及主要完成功能。Delphi是基于窗口和面向对象的编程方法,与Windows操作系统结合,具有强大的数据库技术支持和快速的编译速度。在数据库技术方面,其功能尤为突出。因此使用Delphi设计影院售票系统不仅可视性好,而且使用方便,易于操作。

1 影院售票系统总体设计与主要功能模块设计

影院售票系统的总体设计思路采用树状结构。在整个售票系统中实现了不同用户登陆、管理和影院售票厅的仿真。可以实现售票、打印及各个电影售出票价信息查询、统计等功能。该系统采用模块化设计思想,主要由6个功能模块组成,分别为用户登陆模块、主窗体模块、售票窗体模块、统计模块、查询模块、报表打印模块。本文仅给出主要模块的功能及其关键部分设计的实现方法。

1.1 用户登录及密码输入模块

程序启动后,管理员通过输入密码登陆系统。登录及密码输入模块用于限制操作员的权限,完成的主要功能有程序启动、输入用户名和密码,若输入正确则进入系统主窗体界面,输入错误则弹出错误提示窗口,以保证用户的合法性及系统的安全性。系统登陆界面设计如图1所示。

1.2 系统主窗体设计

系统主窗体模块是程序设计中主要窗体设计之一。它包括用户对影院售票要求的所有信息的录入及售票厅仿真、售票统计、报表预览三大功能模块。主窗体设计是供一般管理人员进行操作。一般管理人员需依据高级管理者的要求输入相关信息,如电影名称及票价、开场时间、日期等,预先进行参数设置。在影院售票厅仿真设计中,用按钮模拟影院中的实际座位,用户可以实时点击座位进行选择售票,并且可以与主窗体之间切换。统计模块可通过输入相关信息统计出某部电影在某段时间售出的总票数和相应价钱。同样通过报表预览按钮便可以查到该段时间的售票情况。总之,系统的主窗体是所有模块互动的中心,主窗体设计如┩2所示。

2 影院售票系统开发过程中遇到的问题及解决方法

2.1 系统开发中遇到的问题

采用Delphi完成售票系统的开发,并对Delphi整个开发环境和关键组件的使用技巧进行了探索应用,在设计中遇到了一些实际问题。

(1) 在修改数据表中字段电影信息值后,Combo〣ox控件的下拉列表内容没有显示修改后的数据,要使表中修改后的字段数据在ComboBox控件中得以更新,必须先重启售票系统,然后才可以将ComboBox下拉列表中的内容更新为表中修改后的数据;

(2) 用于显示表中字段“电影院名称”及“电影名称”的方法,使用ComboBox控件和使用DBCombobox控件结果是不同的;

(3) DBComboBox只显示数据表中的第一条记录;

(4) ComboBox控件下拉列表内容有重复,如图3所示;

5) Rave报表设计中的问题。

2.2 问题解决方法

2.2.1 解决修改数据表里的某一字段数据

当修改了数据表中的某一字段数据后,售票窗口却不能马上更新相应的数据,它需要重新启动系统后,方可实现数据的更新,这无疑会大大降低使用人员的工作效率,给用户带来很大的不变。要解决这一问题,首先要知道创建窗体的FormCreate事件以及显示窗体的FormShow事件这两者各自的功能及其区别。〧ormCreate事件代码是在应用系统启动时就已经被加载,而FormShow事件代码是在该窗体显示时才被调用。

如果把更新数据的代码放在FormCreate事件中,那么当数据表修改以后,由于该窗体在应用系统启动时就已经创建,也就是说它对应的事件代码已经执行过了,所以当数据表中的数据被修改后,在ComboBox列表框中的数据就不能实时刷新,必须重启售票系统,才能执行放在FormCreate中的更新数据事件代码。售票窗体数据才能得以更新。

解决的方法是将更新数据的代码添加到Form㏒how事件代码中,用以更新显示数据。运行结果表明,添加到FormShow事件代码后的系统能够完全解决该问题。从而实现了ComboBox列表框中数据的动态实时刷新。代码编写如下:

2.2.2 [ZK(]显示表中字段DBComboBox与ComboBox不同方法

DBComboBox控件是继承了ComboBox属性的控件,并添加了属性DataSource,增加了数据库的连接。使用DBComboBox控件可以省去大量的代码,使用时更加方便,因此设计系统时,首先想到使用DBComboBox控件来选择“电影院名称”及“电影名称”。然而设计过程中发现,使用DBComboBox控件来选择售票的“电影院名称”和“电影名称”时,当用户选择了DBComboBox下拉列表中某一项时,数据表中的内容会随着选择的内容而变化,这与设计要求不符。

为了满足设计要求,选择使用ComboBox控件的下拉列表显示表中的字段数据“电影院名称”及“电影名称”,通过编写事件代码可以读出数据表中相应字段的数据,并写入到ComboBox的下拉列表中,完成动态添加其下拉列表内容。具体实现代码如下:

在程序开发过程中,有时出现选用的DBComboBox组件与数据表连接后,在程序运行过程中发现它只显示数据表中的第一条记录,无法显示对应数据表中相应字段的所有记录。这是因为DBComboBox下拉列表中的内容要通过遍历数据表的记录来获得所有记录。该情况可以通过在FormCreate中添加以下代码予以解决[4]。但是这种解决方法不能使数据实时更新。若将其添加到FormShow中,可以实现数据的实时刷新。

2.2.4 动态添加ComboBox控件下拉列表内容

动态添加ComboBox控件下拉列表内容时,内容出现重复问题,可以使用SQL语句中限制字distinct来筛选掉重复选项。具体实现代码如下:

这样可以将“table”表中“name”字段数据不重复出现的记录筛选出来。

2.2.5 Rave 5.0报表设计器使用中问题与解决方法

(1) Rave 5.0报表设计器是Delphi 7.0版本新加入的组件。

报表设计是数据库应用程序中的重要组成部分,报表格式复杂多样,报表的生成也是数据库应用系统开发中较烦琐的一项工作。Delphi 7.0版本新加入的Rave 5.0报表设计器是可视化报表设计工具。它能够在许多环境中创建各种报表,给开发带来很大的方便。Rave报表组件位于Delphi 7组件面版的Rave页面上,它们都是非可视化的组件。这些组件分为四种类型:引擎类组件、格式转换类组件、数据连接类组件和RvProject组件。

(2) Rave报表的字段名不能输入中文及解决方法。

在报表设计中,如果所连接的数据表中字段名为中文时,在创建报表中就会出现字段名不能出现在字段列表框中供选择的问题。因为Rave到目前为止,还不能支持字段名为非英文。所以必须给每一个中文字段设置一个对应的英文别名,通过其别名对其进行管理。

打开报表设计器主界面,新建一个New Date Object,完成之后在项目树中打开数据视图条目,选择刚被创建的DateView1,见图4。通过属性面板,在Name重新命名数据表中的中文字段输入对应的英文名,然后在点击鼠标右键选Refresh,依次类推,如图5所示,即可加入所有字段,如图6所示。

[HT5”K][JZ]图6 界面(三)[HT5]

(3) Rave report报表设计中如何获取当前页数和总页数。

在完成报表设计后,为了信息显示更完整,通常在报表打印时给出所打印的当前页数和总页数。该问题可以通过报表组件Report页面上的DataText获得。DataText显示了数据集中的字段。打开Rave report报表设计器,选取报表组件Report页面上的DataText放于报表中页数和总页数的相应位置,并将其DataView属性设为DataView1;在DataField属性窗口中的report variables选项中,选currentPage后点Insert Report Var按钮后,再点OK按钮确定,完成页数的设置。同样通过DataField属性窗口中的report variables选项,选TotalPage后,先点Insert Report Var按钮,之后点OK按钮确定。

猜你喜欢

窗体数据表字段
图书馆中文图书编目外包数据质量控制分析
湖北省新冠肺炎疫情数据表
试谈Access 2007数据库在林业档案管理中的应用
基于列控工程数据表建立线路拓扑关系的研究
CNMARC304字段和314字段责任附注方式解析
图表
无正题名文献著录方法评述
基于VSL的动态数据表应用研究
关于CNMARC的3--字段改革的必要性与可行性研究
巧设WPS窗体控件让表格填写更规范