汽车站售票管理系统

来源:互联网 发布:vs2013编程助手网盘 编辑:程序博客网 时间:2024/05/17 09:12

 

   

 

1. 引言

1.1项目来源 ………………………………………………………………………3

1.2任务目标 ………………………………………………………………………3

1.3应用价值 ………………………………………………………………………3

2. 项目规划

2.1 项目资源

2.1.1硬件设备………………………………………………………………………3

2.1.2软件环境………………………………………………………………………4

2.1.3软件工具………………………………………………………………………4

2.2项目进程

2.2.1 任务描述……………………………………………………………………5

2.2.2进度安排 ……………………………………………………………………5

2.3项目可行性评估

2.3.1技术可行性……………………………………………………………………6

2.3.2计划可行性……………………………………………………………………7

2.3.3应用可行性……………………………………………………………………8

3. 系统需求分析

3.1 业务需求

3.1.1业务组织 ………………………………………………………………………8

3.1.2业务定义 ………………………………………………………………………8

3.1.3业务流程 ………………………………………………………………………9

3.2 功能需求

3.2.1功能组成………………………………………………………………………9

3.2.2功能定义………………………………………………………………………10

3.3 数据需求

3.3.1数据关系………………………………………………………………………11

3.3.2静态数据定义…………………………………………………………………11

3.4 其他需求 ………………………………………………………………………13

4. 系统结构设计

4.1总体框架 ………………………………………………………………………13

4.2 软件结构

4.2.1模块定义………………………………………………………………………13

5. 系统详细设计

5.1功能模块详细设计

5.1.1 车次管理模块代码实现……………………………………………………14

5.1.2 票价管理模块代码实现……………………………………………………15

5.1.3 用户管理模块代码实现……………………………………………………16

5.2数据库详细设计

5.2.1 数据库环境配置……………………………………………………………17

5.2.2 表设计及其关系设置………………………………………………………17

5.2.3 数据访问方式…………………………………………20

5.3 界面设计…………………………………………………………………………22

6.总结………………………………………………………………………………22

 

附录:系统程序源代码…………………………………………………………………24

参考文献

 

 

 

 

 

 

 

 

1. 引言

1.1项目来源

  随着时代的进步,社会的发展,人们的生活形式与习惯也越来越多样化,出行成为了人们生活中的一个重要组成部分,而汽车成为许多人出行选择的交通工具。面对巨大数量的乘客的购票需要,汽车站就要选择使用先进的管理方法来实现方便、快捷的售票、退票等方面的票务管理。随着计算机的普及,信息处理量的逐渐扩大,手工处理方式远远不能满足人们管理活动的需要,各种工作都逐渐由手工转为自动化,使许多复杂、繁琐、且需要很多人力的工作变得简单。汽车站每天产生售票、退票等行为数量多,使得汽车站售票管理的数据量大,而且速度要求要快,传统的人力行为适应,计算机应用软件的使用则能很好地满足汽车站的这一需要,提高售票人员的工作效率,节约相关管理成本。

1.2任务目标

本系统的任务目标是:实现方便、快速售票;是用户准确了解售票情况,提供多种查询和统计功能;实现系统的安全性设置,使系统本身具备一定的维护功能。

1.3应用价值

通过本系统的应用来提高售票人员的工作频率,节省售票所需时间。系统可利用数据库自身的数据连接等功能使用户能够实现不同条件的查询,避免过多的人力资源的利用而且可靠行高、成本低。

2. 项目规划

2.1 项目资源

2.1.1硬件设备          1 系统运行的硬件要求

硬件

配置

CPU

Pentium IV 1.8GHz

输入设备

键盘、鼠标

硬盘

20G

内存

512M

显卡

NVIDIA  GeForce FX 5200

显示器

纯平彩显

2.1.2软件环境

2  系统的开发环境及工具表

开发环境/工具

名称

系统开发操作系统

Windows server 2008

系统开发数据库系统

Access 2003

系统编码设计与开发环境

Visual Basic 6.0

系统相应图表绘制工具

Word

2.1.3软件工具

    (1) Visual Basic 6.0中文版作为前台开发软件

Visual Basic 6.0中文版功能强大,涉及很多方面。其中数据访问是Visual Basic 程序涉及中的重要内容,在Visual Basic 6.0中新增了很多功能。Visual Basic 6.0包括JET数据库引擎的最新版本(Visual Basic Microsoft Access 2003均有这种数据库引擎)。

2Access 2003中文版作为后台数据库

Access 2003提供真正的关系数据库管理。Access具有主关键字和外部关键字定义,并且在数据库的引擎级提供了完全的引用完整性,可以避免不合理的更新与删除。

Visual Basic 6.0与两者结合

Visual Basic使用ADO数据访问技术存取Access数据库

ActiveX

.Exe

.DLL

 

 

数据

窗体

DHTML

编码

 

远端

Microsoft

Transaction

Server

数据绑定

DCOM,远端ADO

数据集,远端UDTs

类模块 ADO Recordset对象,ADO Data控件

数据访问

ADORDODAO

可视化数据工具

数据

中间层

客户端

1  Visual Basic 使用的数据库访问技术示意图

2.2项目进程

2.2.1 任务描述

   策划阶段:搜集参考资料,整体进度安排,选定编程语言与数据库设计工具。

   设计阶段:软件模块设计,数据库定义与设计,代码编写。

   测试阶段:系统整体调试、分析,相应代码修改。

2.2.2进度安排            

3 进度安排表

  

完成任务所需时间

系统设计总体策划

20081

系统资料搜集和整理

20081月—20082月上旬

软件模块、数据库定义

20082月中旬

数据库设计

2008年下旬

软件代码设计

20083月上旬—2008年中旬

软件代码测试

20083月中旬—20083月下旬

系统确认及验收

20084月上旬

2.3项目可行性评估

2.3.1技术可行性

1Visual Basic编程语言特点

①面向对象的可视化编程

Visual Basic中,应用面向对象的程序设计方法(OOP,把程序和数据“封装”起来成为一个对象,每个对象都是可视的。开发人员只要按设计要求的屏幕布局,用系统提供的工具,直接在屏幕上“画”出窗口、命令按钮、文本框等不同类型的对象,并为每个对象赋予应有的属性,即可设计图形用户界面。

②时间驱动的编程机制

Visual Basic通过事件来执行对象的操作。一个对象可能会产生多个事件,每个事件都可以通过一段程序(称为“事件过程”)来响应。

③结构化的设计语言

Visual Basic是在结构化的BASIC语言基础上发展起来的,加上面向对象的设计方法,因此是更出色的结构化程序设计语言。

④友好的VB集成开发环境

Visual Basic提供了易学易用的应用程序集成开发环境。在该集成开发环境中,用户可以设计界面、编写代码和调试程序。Visual Basic 6.0为数据库应用开发提供了丰富的数据库开发组件,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。

2Access数据库技术

Access是一种关系型数据库管理系统,其主要特点如下:

①存储对象单一

Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件里,便于用户的操作和管理。

②面向对象

Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是一系列对象组成的,极大地简化了用户的开发工作。同时,这种基于面对对象的开发方式,使得开发应用程序更为简便。

③界面友好、易操作

Access是一个可视化工具,风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、窗体向导、报表向导等工具,使得操作简便、容易使用和掌握。

④集成环境、处理多种数据信息

Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。

Access支持ODBC

利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、Word文档,还可以建立动态的数据库报表和窗体等。

2.3.2计划可行性

    虽然整个系统设计的时间有三个多月,但是整个系统设计涉及到的方面很多,包括后台数据库的设计与前台界面的设计与代码设计编写。这次选择的Visual Basic语言编程在之前并没有学习或接触过,所以对于整个计划的安排感觉时间不是很足够。

2.3.3应用可行性

     整个系统是使用Access 2003Visual Basic 6.0设计完成的,但是汽车站售票管理系统要实现的是动态数据的管理。在选择的Visual Basic 6.0中无法实现该功能,或者说在我掌握的只是范围内无法实现。还有Access对于汽车站售票系统的大量数据处理实现效果不理想,所以该系统的应用性不适合真正地被使用。

3. 系统需求分析

3.1 业务需求

3.1.1业务组织

使用该系统的主要是汽车站售票人员、汽车站售票工作的管理人员与系统管理员。该系统分为普用户和系统管理员两种权限登陆。汽车站的普通售票人员(普通用户)只能使用该系统的查询、售票管理等基本功能,汽车站售票人员、汽车站售票工作的管理人员能够修改自身的用户名和密码,系统管理员则能实现系统用户与普通用户的添加,修改普通用户与系统管理员的密码,以此确保该系统能够安全操作,避免不必要的损失。

3.1.2业务定义

用户通过输入不同用户名和密码进行身份验证,系统通过用户名和密码判断不同用户的权限,从而确定该用户可以执行的操作。顶层数据流程图如下

 

3.1.3业务流程

所谓业务流程就是用户在使用系统时的工作过程。对于多类型用户的系统来说,每一类用户的工作流程都是不同的。多用户系统的工作流程都是从用户登陆模块开始,对用户的身份进行认证。身份认证可以分为以下两个过程:

1)确认用户是否是有效的系统用户。

2)确定用户的类型。

第一个过程决定用户是否进入系统。第二个过程根据用户的类型决定用户的操作权限,从而决定用户的工作界面。本系统的流程分析如图3

 

1 系统流程图

3.2 功能需求

3.2.1功能组成

在这个汽车站售票管理系统下设有五个不同模块的功能:分别是车次管理、票价管理、票务管理、用户管理和查询管理。车次管理中实现车次信息的编辑。票价管理部分实现票价信息的录入、修改与删除以及票价折扣信息的录入、修改与删除。票务管理部分实现前台售票、前台退票功能。用户管理部分实现用户添加,用户信息修改与用户的删除。具体联系如图所示

 

汽车站售票管理系统

文本框: 票务管理文本框: 票价管理文本框: 车次管理文本框: 用户管理文本框: 查询管理文本框: 车次信息编辑文本框: 票价信息录入文本框: 票价信息修改文本框: 票价信息删除文本框: 前台售票文本框: 前台退票文本框: 用户信息添加文本框: 票价信息修改文本框: 票价信息删除文本框: 车次信息查询文本框: 票价信息查询2 功能组成结构图

3.2.2功能定义

   1)车次管理:车次详细信息的编辑。车次管理中的数据源为Access数据库中Car表,在此管理部分中,能够使用界面操作实现车次信息的编辑,并将数据库中的数据按照编辑的要求来及时更新数据表中的相关数据。

   2)票价管理:票价详细信息的录入、修改、删除,它的数据源为Access数据库的Price表。在此管理部分中,通过票价管理(FrmPriceManage)界面来选择记录并决定执行何种操作,是修改、添加或删除。当命令为修改或者添加时则自动跳转到票价编辑窗体(FrmPriceEdit)实现票价信息的编辑并更新数据库中相应数据记录。

   3)折扣管理:针对不同车次的不同车票类型进行信息的录入、修改与删除,数据源为Access数据库的PriceDiscount表。此管理部分首先显示的为票价折扣信息管理窗体(FrmDiscount),通过选择不同的命令按钮来执行相应的修改、添加或删除操作中一个,选择添加或修改则转至折扣信息编辑窗体(FrmDiscountEdit)执行命令并更新相应的数据记录。

4)用户管理:所有系统用户的管理,包括系统普通用户与系统管理员。此管理模块数据源为Access数据库的Users表。在系统主界面中首先进入的是名称为FrmUserMan的用户管理主窗体,选择添加或删除用户进入名为FrmUserEdit的用户编辑界面进行操作,操作完成便更新数据库数据。

5)查询管理:通过查询界面可以根据条件进行车次时刻、车次票价查询。

3.3 数据需求

3.3.1数据关系

 

 

 

 

 

 

 

 

 

 

1

1

1

1

  1

1

N

1

CarID

CarType

PlateNumber

CarHolder

RunningWay

SeatLimit

OutSetTime

TerminalID

OutStation

TerminalName

TNPYCode

CarID

TicketPrice

 

RecordNumber

TicketTypeID

Discount

CarID

 

CarID

Date

Terminal

Sell

Price

sno

 

TicketTypeID

RecordID

TicketType

 

 

3  实体关系图

 

3.3.2静态数据定义

1 Car表详细设计

字段名

数据类型

是否主键

是否必填

字段说明

CarID

文本

车次编号

CarType

数字

客车型号

PlateNumber

文本

车牌号

CarHolder

文本

责任人

RunningWay

文本

经营路线

SeatLimit

数字

座位限额

OutSetTime

日期/时间

发车时间

2  Seat表详细设计

6 PriceDiscount表详细设计

字段名

数据类型

是否主键

是否必填

字段说明

RecordNumber

自动编号

记录号

TicketTypeID

数字

车票类型

Discount

数字

折扣

CarID

文本

车次

3  Price表详细设计

4  Type表详细设计

字段名

数据类型

是否主键

是否必填

字段说明

RecordID

自动编号

记录号

TicketTypeID

数字

车票类型编号

TicketType

文本

车票类型

 

3.4 其他需求

汽车站售票系统数据库中的数据量十分庞大,而且更新速度十分快。在数据大小方面要求数据的属性要设置合理,假如是数据的属性值越大,则数据本身所占用的容量也就十分的庞大,有可能削弱系统运行速度,使得系统无法达到预期的目的。另外,在整个系统当中要确保数据在保存与传递过程中的安全,以免发生严重的错误,造成巨大的损失。

4. 系统结构设计

4.1总体框架

系统工作模式为后台数据库——前台操作界面——系统用户的工作模式。系统用户通过前台操作界面从后台数据库中提取数据并进行有关数据的操作。

4  系统工作模式示意图

 

 

 

 

 

后台数据库

 

前台操作界面

系统用户

 

 

4.2 软件结构

4.2.1模块定义

       1)车次管理模块

            ①编辑车次信息

②查看车次信息

       2)票价管理模块

            ①添加票价信息

②修改票价信息

④查看票价信息

          3)折扣信息管理

                ①添加折扣信息

③删除折扣信息

④查看折扣信息

          4)用户信息管理

①添加用户信息

②修改用户密码

③删除用户信息

④查看用户信息

           5)查询管理

                ①票价查询

②车次查询

5. 系统详细设计

5.1功能模块详细设计

5.1.1 车次管理模块代码实现

Private Sub Cmd_OK_Click()

'检查用户录入数据的有效性

   txtCarID.SetFocus

   Exit Sub

 End If

 If Len(Trim(txtOutTime)) = 0 Then

    MsgBox "请输入发车时间"

    txtOutTime.SetFocus

    Exit Sub

 End If

 '把用户录入的数据赋值到数据库对象变量中

 With MyType

 .CarID = MakeStr(txtCarID)   '车次编号

 .OutSetTime = MakeStr(TimeEdit) '发车时间

 .RunninWay = MakeStr(WayEdit)  '经营路线

 .CarType = MakeStr(TypeEdit)  '车辆类型

 .PlateNumber = MakeStr(CNnEdit) '车牌号

 .CarHolder = MakeStr(HolderEdit)  '责任人

 .SeatLimit = MakeStr(LSeatEdit)  '额定座位

 '

End If

End With

  Unload Me  '关闭窗口

5.1.2 票价管理模块代码实现

  票价管理部分代码如下(信息添加过程):

Private Sub Cmd_Add_Click()

  '初始化FrmDiscountEdit信息

  FrmPriceEdit.txtTerminalName = ""

  FrmPriceEdit.txtTNPYCode = ""

  FrmPriceEdit.txtCarID = ""

  FrmPriceEdit.txtTicketPrice = ""

  FrmPriceEdit.Show

  RefreshData

End Sub

5.1.3用户管路模块代码实现(编辑窗体代码):

Private Sub Cmd_OK_Click()

 If Trim(txtUserName) = "" Then

   MsgBox "请输入用户名"

   txtUserName.SetFocus

   Exit Sub

 End If

 

 End If

 If txtPass <> txtPass2 Then

    MsgBox "密码和确认密码不相同,请重新确认"

    txtPass2.SelLength = Len(txtPass2)

    Exit Sub

 End If

 '判断是否存在同名用户

 With MyUser

    If Modify = False Or OriUser <> Trim(txtUserName) Then

       If .In_DB(Trim(txtUserName)) = True Then

      

txtUserName.SelStart = 0

          txtUserName.SelLength = Len(txtUserName)

          Exit Sub

       End If

5.2数据库详细设计

5.2.1 数据库环境配置

此系统使用Access 2003中文版作为后台数据库,它对环境的要求并不大。用户可以在将其与其他一些Microsoft套装来一起进行安装,也可以将Access 2003中文版作为一个但单独的数据库软件类安装。

5.2.2 表设计及其关系设置

5  Car 结构

6  Price结构

7  PriceDiscount结构

 

 

 

 

8  Type结构

 

 

 

 

 

 

 

9 SelledTicket表结构

10  BackTicket表结构

 

 

 

11 Users结构

 

 

 

 

 

 

 

 

13   表间结构示意图

5.2.3 数据访问方式及其代码分析与说明

   在本系统中Visual Basic使用ADO数据访问技术存取Access数据库。数据提供程序和使用者之间的桥梁就是数据源,数据源是使用Microsoft ActiveX Data Objects(ADO)创建的,而Microsoft ActiveX Data ObjectsVisual Basic在任何数据源中访问数据的主要方法。为了向后兼容和方便工程维护,它仍然支持远程数据对象(Remote Data Object,RDO)和数据访问对象(Data Access Objects,DAO)。在Visual B,数据访问对象(DAO)、ODBC直接连接到数据库。其中ADO是最新的数据库访问技术。它是使用更加简单,而又更加灵活的对象模型。对于新工程,应该使用ADO作为数据访问接口。

为了节省系统资源,在系统中新建一个模块,该模块用于连接各个模块中的数据表,从而避免在程序中大量运用ADO控件,给开发应用程序带来诸多不便。模块中的程序代码如下:

Public adoCon As New ADODB.Conncetion

Public adors As New ADODB.Recordset

'连接数据库

Public Sub main()

     Set adoCon = New ADODB.Connection

     adoCon.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "/ 汽车站售票管理系统.mdb" & ";Persist Security Info=False"

     FrmLogin.Show

     FrmLogin.txtUser.SetFocus

End Sub

 

5.3 界面设计

系统主界面设计如下,主界面顶端显示不同管理模块,点击则进入相应界面。下端显示系统当前所处日期和时间。

14 系统主界面设计

6.总结

     这次的课程设计对于我来说是一项很重大的任务,也是一次很大的挑战。首先,我选择的是做系统,要做好一个系统就必须要有前台和后台的不同区别。前台的界面我选择的是Visual Basic 6.0。这是我以前从来没有接触过的语言,要做系统就要学习这一门语言。其次,做一个系统的整体设计以前从来没有过,这是第一次的尝试。

     经过这一段的时间,我还是大概出了一个系统做,只是系统最终并没有编译成功,所以根本不能运行,这就说明我的系统设计是不成功的。虽然没有取得比较好的结果,但是我至少知道了系统设计的一些步骤与流程,也对Visual Basic语言有了一定的了解,这是我有收获的方面。

回头仔细分析自己制作开发的系统很不完善,要实现汽车站的快速、方便的票务管理,用Access作为后台数据库是行不通的,本系统实现的功能也不够完善。而且,单独选用Visual Basic来设计前台的操作界面也不是一个理想的选择。使用Visual Basic设计的界面功能不够强大,操作不是很方便,无法实现现实中的应用。

  附录:系统程序源代码

(1)登陆窗体(FrmLogin)代码

Public PasswordKey As String

Public NameKey As String

Public Try_times As Integer

'取消键退出登陆界面

Private Sub Cmd_Cancel_Click()

Unload Me

End Sub

Private Sub Cmd_OK_Click()

   '数据库有效性检查

If Trim(txtUser) = "" Then

End If

If Trim(txtPwd) = "" Then

    MsgBox "请输入密码"

    txtPwd.SetFocus

    Exit Sub

  End If

  PasswordKey = Str(txtPwd)

  '判断用户是否存在

  If MyUser.In_DB(NameKey) = Flase Then

     MsgBox "用户名不存在"

'判断密码是否正确

 MyUser.GetINfo (NameKey)

 If MyUser.Pwd <> PasswordKey Then

    MsgBox "密码错误"

    Try_times = Try_times + 1

  If Try_times >= 3 Then

    MsgBox "您已经三次尝试进入本系统,均不成功,系统将关闭"

    DBapi_Disconnect

 End If

 '登陆成功,将当前用户的信息保存在CurUser

'关闭自己并显示主窗体

 Unload Me

 FrmMain.Show

End Function

 

2)主窗体(FrmMain)代码

'设置数据库连接字符串

Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & " /汽车站售票管理系统.mdb " & ";Presist Security Info=False"

End Sub

Private Sub TPGL_Click()

   FrmBack.Show

End Sub

Private Sub XGMM_Click()

    If CurUser.User_type = 1 Then

       FrmUserMan.Show

    Else

       MsgBox "没有权限"

    End If

End Sub

Private Sub ZKGL_Click()

  FrmDiscount.Show

End Sub

 

3)售票窗体(FrmTicketSell)代码

Private Sub Cmd_Cancel_Click()

  Unload Me

End Sub

Private Sub Cmd_Search_Click()

  'GridRsfresh  '根据条件查询所有信息

End Sub

 

Private Sub Cmd_Sell_Click()

    Dim ComboDate As String, TNPYCode As String, CarID As String

    Dim left As Integer

   

    TNPY = Trim(txtTNPYCode)

 

    Trim(ComboDate) & "'" & " and Price.TNPYCode='" & Trim(txtTNPYCode) & "'"    

         '根据输入的信息,从表里得出查询结果

rsdata.Open strQuery, cnnrsdata, , , adCmdText

    If rsdata.EOF Then

        MsgBox "车次或拼音码输入有误,请重新输入!", , "Error!"

        ComboDate.Text = ""

        TNPYCode = ""

        txtCarID = ""

    

        txtCarID.SetFocus

    ElseIf IsNumeric(Number) = False Then

        MsgBox "车次编号应为数字!"

        txtCarID.Text = ""

        txtCarID.SetFocus

        Else

       rsdata.Close

  

       rsdata.Close

        strQuery = "select count(*) as total from Seat where Seat.sell=false and Seat.date='" & _

        Trim(ComboDate) & "'" & " and Seat.CarID='" & Trim(txtCarID) & "'"

        rsdata.Open strQuery, cnnrsdata, , , adCmdText   '统计本车次的剩余的座位数

        rsdata.MoveFirst

         rsdata.AddNew

                    rsdata!Date = comdate

                    rsdata!Seat = comSNno

                    rsdata!CarID = CarID

                    rsdata!TNPYCode = TNPYCode

                    rsdata!sno = Trim(seatnumber)

                    rsdata.Update    '添加新记录

        '更新 Seat 表 ,将刚卖出的座位号设为 false

                    strQuery = "select *  from Seat where Seat.sno='" & Trim(seatnumber) & _

                    "' and Seat.date='" & Trim(ComboDate) & "'" & _

                    " and SeatCarID='" & Trim(txtCarID) & "'"

                    rsdata.Open strQuery, cnnrsdata, , , adCmdText

                    If rsdata!sell = False Then

                        rsdata!sell = True

                        rsdata.Update

                    End If

        

 

4)退票窗体(FrmBack)代码

Private Sub Cmdback_Click()

    Dim strdate As String

  

    strTnl = Trim(ComboTerminal.Text)

    Dim strcnn

    init_ado

    strQuery = "Select * From SellTicket Where SellTicket.date='" & _

    Trim(Combodate.Text) & "'" & " and SellTicket.Sno='" & Trim(ComboSNno.Text) & "'" & _

" and SellTicket.carID='" & Trim(ComboCarID.Text) & "'"    '检查车票日期、车次和座位是否有效

 rsdata.Open strQuery, cnnrsdata, , , adCmdText

    If rsdata.EOF Then

        MsgBox "你所要退的票为无效票或是你的输入有问题!"

        Combodate.Text = rsdata!Date

        ComboSNSno.Text = rsdata!sno

        ComboCarID.Text = rsdata!CarID

        '车票有效,确认日期、车次和座位号,确认是否退票

        ticketinformation = "日期:" & strdate & "   " & "车次:" & strCarID & "   " & "座位号:" & strsno & ""

        response = MsgBox(ticketinformation, vbOKCancel + vbInformation, "是否真要退票?")

        If response = 1 Then

            '更改 SellTicket

            rsdata.Close

            strQuery = "select * from SellTicket"

            rsdata.Open strQuery, cnnrsdata, , , adCmdText

            rsdata.MoveFirst

            Dim i As Integer

            For i = 1 To rsdata.RecordCount

             If rsdata!Date = strdate And rsdata!sno = strsno And rsdata!sno = strseat Then

              rsdata.Delete

       

                rsdata.Update

            End If

            Combodate.Text = ""

            ComboSno.Text = ""

            Combodate.SetFocus

            MsgBox "退票已成功!"

        Else

        rsdata.Close

        Combodate.Text = ""

        ComboSno.Text = ""

        Combodate.SetFocus

       End If

    End If

  End Sub

5)折扣管理窗体(FrmDiscount)代码

Private Sub Cmd_Add_Click()

  '初始化FrmDiscountEdit信息

  FrmDiscountEdit.txtTerminalName = ""

  FrmDiscountEdit.txtTNPYCode = ""

 mber

  FrmDiscountEdit.Show 1

  RefreshData

End Sub

Private Sub Cmd_Cancel_Click()

  Unload Me

End Sub

Private Sub Cmd_Del_Click()

   Dim TmpID As Long

   If Adodc1.Recordset.BOF = True Then

      MsgBox "请选择记录"

      Exit Sub

   End If

 elds(0)

  FrmDiscountEdit.txtCarID = Adodc1.Recordset.Fields(2)

 ordNumber = OriRecordNumber

  FrmDiscountEdit.Modify = True

  FrmDiscountEdit.Show 1

  RefreshData

End Sub

 

6)票价信息管理窗体(FrmPriceManage)代码

Private Sub Cmd_Add_Click()

  '初始化FrmDiscountEdit信息

  FrmPriceEdit.txtTerminalName = ""

  FrmPriceEdit.txtTNPYCode = ""

  FrmPriceEdit.txtCarID = ""

  FrmPriceEdit.txtTicketPrice = ""

  FrmPriceEdit.Modify = False

  FrmPriceEdit.VarTermanalID = OriTerminalID

   If Adodc1.Recordset.BOF = True Then

      MsgBox "请选择记录"

    .DeleteByID(TmpID)

   End If

   RefreshData

End Sub

Private Sub Cmd_Modi_Click()

  '初始化FrmPriceEdit信息

  FrmPriceEdit.txtCarID = Adodc1.Recordset.Fields(0)

Private Sub Form_Load()

   GridREfresh

End Sub

 

 

 

 

 

参考文献

[1]高春艳、李俊民等. Visual Basic信息系统开发案例精选.北京:机械工业出版社, 2005

[2]刘洪等 Visual Basic程序设计教程.中国教育出版社,2004

[3]李代平等  《系统分析与设计》清华大学出版社。

原创粉丝点击