数据库公交查询系统

发布时间:2014-04-07 16:47:24

《数据库原理与应用》

课程设计

公交查询系统

(系) 信息工程学院

2011级计科本1

信息工程学院

起止时间:2013年月23日至2014 4



《数据库原理与应用》课程设计任务分配

院(系):信息工程学院 教研室:软件教研室

课程设计题目

公交查询系统

计目的

《数据库原理与应用》课程设计是计算机类专业的集中实践性环节之一,是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,是帮助学生全面牢固地掌握课堂教学内容、培养学生分析问题、解决问题的能力进行的一次全面的综合练习。通过结合设计题目进行综合性应用,对所学知识达到融会贯通的程度,对提高学生的综合素质具有重要的意义。

1、加深对数据库基础理论和基本知识的理解。

2、掌握数据库设计与使用的基本方法。

3、提高运用数据库解决实际问题的能力

小组成员及任务分配

姓名

学号

承担任务

是否组长

1142

概要设计、详细设计、编码

1

查阅和收集文献

1

数据库设计

11

约束和规则设计

1

撰写报告



公交管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序开发两个方面。进过分析使用 Visual Basic 6.0 为开发工具,采用面向对象的可视化开发平台作为开发工具,采用面向对象技术,图形化的应用开发环境,使得开发人员可通过菜单、界面、图形浏览工具、对话框以及嵌入的各种生成器来轻松的完成各种复杂的操作。本系统可以方便的添加公交路线、添加公交站点信息,也可方便的修改公交路线和站点信息。能让用户方便地查询两站点之间路线选择方案。开发过程中不断修正和改正,直到形成用户满意的可行系统。

关键字 信息管理系统;面向对象;可视化



1

1.1 开发背景

随着社会的发展,人们不在局限于某一个城市。当到了一个不熟悉的城市时,出门乘车时的路线选择就显得相当重要了,有了正确的出行路线,可为用户节约大量的时间,提高办事效率。另外,一些大城市的公交系统非常庞大,市民在自己生活的城市出行,有时也需要通过咨询才了解出门时路线的选择。因此,开发一个城市公交查询系统就显得十分必要。

本系统采用Visual Basic中文版数据库系统进行开发。如:本系统可以方便的添加公交路线、添加公交站点信息[1],也可方便的修改公交路线和站点信息。能让用户方便地查询两站点之间路线选择方案。

使用本系统可提高公交公司对公交路线、站点的管理,可以方便乘客查找最快捷的路线,方便出行。

1.2 设计目标

开发这个系统的目的就是为了帮助广大乘客提高工作效率。通过本查询软件,能帮助广大乘客利用手机或是电脑方便的查询出行路线,可对系统进行管理、输入、输出、查找等操作,可以避免许多不必要的错误,大大减少了乘车周转路线,方便快捷,使效率大大提高。

1.3 设计目的

1 掌握数据库的一般设计方法,主要包括需求分析,系统设计的组织于实施,设计出完整的数据库结构[2]

2 系型数据库查询的编程技术。并能独立设计完成一般查询语句的设计及调试运行等工作。

3 培养把所学知识运用到具体对象,并能求出解决方案的能力。

4 运用开发工具VB为前台,SQL Server 2000为后台,前后台的结合开发公交查询系统。

2 需求分析

2.1 系统分析

本系统要实现哪些功能,要有怎样的性能是项目开发的目标,因此,在实际项目的开发之前,首先要进行需求分析及可行性分析,这是项目开发的基础。

2.2 需求分析

通过与公交集团调度人员、部分乘客进行沟通,详细了解本系统的需求,得到该系统需要具备的功能,具体如下。

2.2.1后台管理

·可以增加、修改路线资料;

·可以增加、修改站点信息

·可以调整站点在路线中的位置、删除线路中的站点。

2.2.2 前台查询

·可以查询指定线路经过的所有站点;

·可以查询出发站点到目的站点之间的出行方案(当有多种方案时,全部显示出来,供用户选择)。

2.3 系统要求

公交查询系统需要包括公交路线信息管理、公交站点信息管理、公交查询等功能。在公交线路信息管理和公交站点信息管理中,都应提供对数据编辑修改功能。

2.4 系统目标

公交查询系统的目标是:实现公交企业的信息化管理,提高公交站点数据的维护性能,提高出行管理效率。

2.4.1 关键技术

Visual Basic与数据库结合,可方便快速的开发信息管理系统,本项目的开发过程主要使用了以下技术

(1) 数据库和Visual Basic的连接。

(2) 数据库的应用技术。

(3) Visual Basic的前台窗口界面创建。



3数据分析与建模

3.1功能模块简介

3.1.1 系统功能维护模块

  用户管理:设定本系统的系统操作员,可以一个也可以多个管理员。

  口令管理:在不退出系统的情况下,凭借原来的密码,可以修改管理员密码。

  退出系统:在使用完系统之后,可以退出系统。

3.1.2系统功能结构

本系统主要包括后台管理和前台查询两大部分,其中后台管理包括增加线路、修改线路,管理站点等功能,前台查询包括线路查询和站点查询两个功能。其功能结构如图3.1所示。

3.1 公交查询系统ER

本系统共建了两张表bus表(保存公交线路)、station表(保存公交站点)。下面分别列出各表的字段说明。

bus表:用于保存公交线路的基本信息。该表包括9个字段,分别用来保存某一公交线路的相关信息,各字段的参数如表3-1所示。

3-1 bus

字段名称

数据类型

字段大小

是否主键

说明

ID

自动编号

线路序号

BUS

文本

20

线路名

BEGINEND

文本

50

起止站名

TICKTYPE

文本

20

售票类型

PRICE

文本

20

票价类型

IC

/

支持IC

RUNTIME

文本

20

运行时间

COMPANY

文本

50

公交公司

MEMO

备注

备注

一般情况下,公交线路名称是唯一的,可以使用公交线路名字段BUS作为关键字。但有时公交线路名称可能会更改,因此本系统中仍然使用一个自动编号字段ID作为主关键字。

1station表:用于保存各路线所经过的站点名称。该表包括4个字段,分别用来保存线路编号、站点名称、站点在线路中的序号等信息,各字段的参数如表3-2所示。

3-2 station

字段名称

数据类型

字段大小

是否主键

说明

ID

自动编号

序号

BUSID

数字

线路序号

STATION

文本

50

站点名

ORDER

数字

站点序号

其中,字段BUSIDBUS表中的字段ID对应,保存公交线路对应的编号。这里保存编号的好处是,当只是修改了公交线路的名称时,station表中的内容可以不修改,通过BUSID号仍然可连接到对应的公交线路中。

3.1.3基本资料管理模块

公交查询系统:公交路线的添加、修改、站点管理。

3.1.4查询模块

可以根据某个条件进行查询,如:第几路车,出发站点-终点站等。

3.2 系统E-R

本系统包括的实体有两个:公交线路,公交站点,下面分别介绍这两个实体的E-R图,通过E-R图了解各实体的属性。

·公交线路的E-R如图3.2所示。

·公交站点的E-R图,如图3.3所示

3.2 公交线路的E-R

3.3 公交站点的E-R



4 数据库建立

4.1 系统关系模型

1 bus 表(id , bus , beginend , ticktype , price , ic , runtime , company , memo

2 station表(idbusid stationordar

4.1.1 创建数据库

1 系统关系模型

1bus信息表

2 station信息表

2 后台实现功能

4.1 创建数据库

4.2 bus

4.3 station

4.2 后台功能实现(SQL Server)

4.2.1 用户表实现

用户表的建立



4.4所用表格的表属性

4.5 bus信息表图

4.6 station信息表图

4.3 前台功能实现(Visual Basic 6.0

4.3.1 登录窗体的实现

主窗体主要用来集成本系统两个模块的功能,因此,主窗体中的代码主要用来调用其他子窗体。本系统中,使用按钮调用对应子窗体。管理登录界面,主窗体framMain 如图4.74.8所示。

4.7 登录界面

4.8 主窗体

4-1 主窗体控件表

控件名称

属性

属性值

控件名称

属性

属性值

Form

名称

frmmain

Commandbutton3

名称

cmdstation

caption

公交查询系统

caption

管理站点

Commandbutton1

名称

cmdadd

Commandbutton4

名称

cmdfind

caption

增加线路

caption

乘车查询

Commandbutton2

名称

cmdmod

caption

修改线路

4.3.2 公交查询、添加、更改、删除的实现

公交查询系统的窗体:

4.9 乘车查询系统

公交查询系统的增加窗体:

4.10 增加线路图

公交查询系统的修改窗体:

4.11 修改线路图



5 数据库应用开发

5.1 连接数据库

通过ADO控件来连接数据库:

1)添加ADO控件,如图

5.1 ADO控件

2) 更改ADO控件属性 如图

5.2 设置AD0控件属性

5.2 通过前台对后台操作

5.2.1公交查询、添加、更改、删除的实现

1)公交查询系统登陆界面图

5.3 查询系统图

主窗体代码

Private Sub cmdAdd_Click() '增加线路

frmAddBus.Show '显示增加线路窗体

End Sub

Private Sub cmdFind_Click() '乘车查询

frmFind.Show '显示乘车查询窗体

End Sub

Private Sub cmdModi_Click() '修改线路

frmModifybus.Show '显示修改线路窗体

End Sub

Private Sub cmdStation_Click() '管理站点

frmStation.Show '显示管理站点窗体

End Sub

Private Sub Form_Load()

End Sub

2)根据线路名增加公交线路,界面如图:

5.4 增加线路图

增加公交信息代码:

Private Sub lstbus_Click() '单击列表框时,更新右侧的显示数据

Dim cnn As New ADODB.Connection '定义数据库连接

Dim rst As New ADODB.Recordset '定义记录集

Dim str1 As String, str2 As String '临时字符串变量

str1 = lstbus.List(lstbus.ListIndex) '获取列表框中的选中项(可介绍一下列表框)

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=stu03" '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst.ActiveConnection = cnn '设置记录集的数据库连接

str2 = "SELECT * FROM [BUS] WHERE BUS='" & Trim(str1) & "'" '定义查询字符串

rst.Open str2 '打开记录集

If Not rst.EOF Then '若记录集不为空,显示内容

'gID = rst("id") '记录关键字

txtbus.Text = rst("bus") '线路名

txtBeginEnd.Text = rst("beginend") '运行区间

cmbTickType.Text = rst("ticktype") '售票类型

cmbPrice.Text = rst("price") '票价

If rst("ic") = True Then '支持IC

optIC1.Value = True

Else '不支持IC

optIC2.Value = True

End If

txtRuntime.Text = rst("runtime") '运行时间

txtCompany.Text = rst("company") '公交公司

If Not IsNull(rst("memo")) Then '若备注不为空

txtMemo.Text = rst("memo") '显示备注

End If

Else '若记录集为空,清空显示内容

txtbus.Text = ""

txtBeginEnd.Text = ""

cmbTickType.Text = ""

cmbPrice.Text = ""

optIC2.Value = True

txtRuntime.Text = ""

txtCompany.Text = ""

txtMemo.Text = ""

End If

rst.Close '关闭记录集

cnn.Close '关闭数据库连接

End Sub

Function CheckInput() As Boolean '检查用户输入的内容

Dim str1 As String '临时变量

Dim cnn As New ADODB.Connection '定义数据库连接

Dim rst As New ADODB.Recordset '定义记录集

CheckInput = False '设置函数初始返回值为False

If Trim(txtbus.Text) = "" Then '若“线路名”为空

MsgBox "请输入线路名称!", vbCritical + vbOKOnly, "警告" '提示信息

txtbus.SetFocus '设置输入焦点

Exit Function '退出函数

End If

str1 = "SELECT COUNT(*) FROM [BUS] WHERE [BUS]='" & Trim(txtbus.Text) + "'" '定义SQL语句,查询是否已有该线路

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=stu03" '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst = cnn.Execute(str1) '执行SQL语句,返回结果

If rst(0) > 0 Then '若满足条件的记录数大于0

MsgBox "系统中已有线路【" & Trim(txtbus.Text) + "】的资料!", vbCritical + vbOKOnly, "警告" '显示提示信息

txtbus.SetFocus '设置输入焦点

Exit Function '退出函数

End If

If Trim(txtBeginEnd.Text) = "" Then '若“运行区间”为空

MsgBox "请输入该线路的运行区间!", vbCritical + vbOKOnly, "警告" '提示信息

txtBeginEnd.SetFocus '设置输入焦点

Exit Function '退出函数

End If

If Trim(txtRuntime.Text) = "" Then '若“运行时间”为空

MsgBox "请输入该线路的运行时间!", vbCritical + vbOKOnly, "警告" '提示信息

txtRuntime.SetFocus '设置输入焦点

Exit Function '退出函数

End If

If Trim(txtCompany.Text) = "" Then '若“公交公司”为空

MsgBox "请输入该线路所属公司!", vbCritical + vbOKOnly, "警告" '提示信息

txtCompany.SetFocus '设置输入焦点

Exit Function '退出函数

End If

CheckInput = True '设置函数返回值为True

End Function

Private Sub LockControl(bShow As Boolean) '锁定窗体中的部分控件

txtbus.Locked = bShow

txtBeginEnd.Locked = bShow

cmbTickType.Locked = bShow

cmbPrice.Locked = bShow

optIC1.Enabled = Not bShow

optIC2.Enabled = Not bShow

txtRuntime.Locked = bShow

txtCompany.Locked = bShow

txtMemo.Locked = bShow

End Sub

3)根据线路,站点查询,界面如图:

5.5 乘车查询图

乘车查询代码:

Private Sub cmdFind_Click()

Dim strBegin As String, strEnd As String

strBegin = Trim(cmbBegin.Text) '获取出发站点名称

strEnd = Trim(cmbEnd.Text) '获取目的站点名称

If strBegin = strEnd Then Exit Sub '名称相同则退出

BusSwitch strBegin, strEnd

End Sub

Private Sub cmdFindLine_Click()

Dim cnn As New ADODB.Connection '定义数据库连接变量

Dim rst As New ADODB.Recordset '定义记录集变量

Dim str1 As String, str2 As String, str3 As String, i As Integer

str1 = cmbBusLine.Text

If str1 = "" Then

MsgBox "请输入或选择线路名称!", vbCritical + vbOKOnly, "提示"

Exit Sub

End If

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=2011-20131127VF" '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst.ActiveConnection = cnn '设置记录集的数据库连接

str2 = "SELECT a.[station] FROM [station] a,[bus] b " '定义查询SQL语句

str2 = str2 & " WHERE a.[busid]=b.[id] AND b.[bus]='" & str1 & "'"

str2 = str2 & "ORDER BY a.[ordar]"

rst.Open str2 '打开记录集

str3 = "" & str1 & "】的停靠站点如下:" & vbNewLine '生成查询结果

i = 1

Do While Not rst.EOF

str3 = str3 & i & "" & rst(0).Value & vbNewLine '站点名

i = i + 1 '站点序号

rst.MoveNext '处理下一记录

Loop

txtBusLine.Text = str3 '显示查询结果

End Sub

Private Sub Form_Load()

Dim cnn As New ADODB.Connection '定义数据库连接变量

Dim rst As New ADODB.Recordset '定义记录集变量

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=2011-20131127VF" '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst.ActiveConnection = cnn '设置记录集的数据库连接

rst.Open "SELECT [bus] FROM [bus] ORDER BY [bus]" '选择线路名称

If Not rst.EOF Then '记录集中有数据

cmbBusLine.Clear '清空组合框中的列表项

Do While Not rst.EOF '循环处理记录集中的数据

cmbBusLine.AddItem rst(0).Value '将线路名添加到组合框中

rst.MoveNext '处理下一记录

Loop

End If

rst.Close '关闭记录集

rst.Open "SELECT DISTINCT([station]) FROM [station] ORDER BY [station]"

cmbBegin.Clear

Do While Not rst.EOF '循环处理记录集中的数据

cmbBegin.AddItem rst(0).Value '将站名添加到组合框中

rst.MoveNext '处理下一记录

Loop

rst.Close

cnn.Close '关闭数据库连接

cmbEnd.Clear '清除组合框中原有数据

For i = 0 To cmbBegin.ListCount - 1 '将出发站点的数据复制到目的站点

cmbEnd.AddItem cmbBegin.List(i) '向组合框中添加数据

Next

End Sub

4)修改线路界面如图:

5.5 修改线路图

修改代码:

Private Sub cmdModify_Click()

Dim str1 As String

Dim cnn As New ADODB.Connection '数据库连接

If cmdModify.Caption = "修改" Then '按钮为“修改”状态

cmdModify.Caption = "保存" '修改按钮标题为“保存”,提示用户保存数据

cmdCancel.Visible = True '显示“取消”按钮

lstbus.Enabled = False '禁止用户操作列表框

LockControl (False) '允许用户操作窗口中部分控件

Else

If gID <= 0 Then

MsgBox "系统出错!", vbCritical + vbOKOnly

Unload Me

End If

If Not CheckInput Then Exit Sub '调用CheckInput函数检查输入数据

cmdModify.Caption = "修改" '修改按钮标题为“修改”

cmdCancel.Visible = False '隐藏“取消按钮"

lstbus.Enabled = True '允许用户操作列表框

LockControl (True) '锁定窗口中部分控件

'定义新增数据的SQL语句

str1 = "UPDATE [BUS] SET [bus]='" & Trim(txtbus.Text) & "'," '线路名

str1 = str1 + "[beginend]='" & Trim(txtBeginEnd.Text) & "'," '运行区间

str1 = str1 + "[ticktype]='" & Trim(cmbTickType.Text) & "'," '售票类型

str1 = str1 + "[price]='" & Trim(cmbPrice.Text) & "'," '票价

If optIC1.Value Then '是否支持IC

str1 = str1 + "[ic]=1," '支持

Else

str1 = str1 + "[ic]=0," '不支持

End If

str1 = str1 + "[runtime]='" & Trim(txtRuntime.Text) & "'," '运行时间

str1 = str1 + "[company]='" & Trim(txtCompany.Text) & "'," '公交公司

If Not IsNull(txtMemo.Text) Then

str1 = str1 + "[memo]='" & Trim(txtMemo.Text) & "'" '备注

End If

str1 = str1 + " WHERE id=" & gID '条件

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=2011-20131127VF" '设置数据库连接字符串

cnn.Open '打开数据库连接

cnn.Execute (str1) '执行UPDATE语句更新数据

cnn.Close '关闭数据库连接

Form_Load

End If

End Sub

Private Sub cmdCancel_Click() '“取消”按钮放弃输入的值

lstbus.Enabled = True '允许用户操作列表框

cmdCancel.Visible = False '隐藏“取消”按钮,使其不可见

cmdAddbus.Caption = "新增" '修改“保存”按钮标题为“新增”

LockControl (True) '锁定窗口中部分控件

lstbus_Click '调用列表框的单击事件代码

End Sub

Private Sub cmdExit_Click() '退出当前窗体

Dim ret As Integer

If cmdModify.Caption = "保存" Then '判断是否有输入的信息未保存

ret = MsgBox("新增数据还未保存,是否退出?", vbQuestion + vbYesNo) '获取用户的选择

If ret = vbNo Then '选择“否”

Exit Sub '退出当前过程,则不退出当前窗体

End If

End If

Unload Me '退出当前窗体

End Sub

Private Sub Form_Load() '窗体初始化代码

Dim cnn As New ADODB.Connection '定义数据库连接变量

Dim rst As New ADODB.Recordset '定义记录集变量

LockControl (True) '锁定窗口中部分控件

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=2011-20131127VF " '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst.ActiveConnection = cnn '设置记录集的数据库连接

rst.Open "SELECT [bus] FROM [bus]" '打开记录集,得到线路名数据

lstbus.Clear

Do While Not rst.EOF '循环处理记录集中的数据

lstbus.AddItem rst(0).Value '将线路名添加到列表框中

rst.MoveNext '处理下一记录

Loop

If lstbus.ListCount > 0 Then '列表框中有数据

lstbus.ListIndex = 0 '选中第1个数据

End If

rst.Close '关闭记录集

cnn.Close '关闭数据库连接

End Sub

Private Sub lstbus_Click() '单击列表框时,更新右侧的显示数据

Dim cnn As New ADODB.Connection '定义数据库连接

Dim rst As New ADODB.Recordset '定义记录集

Dim str1 As String, str2 As String '临时字符串变量

str1 = lstbus.List(lstbus.ListIndex) '获取列表框中的选中项(可介绍一下列表框)

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=2011-20131127VF" '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst.ActiveConnection = cnn '设置记录集的数据库连接

str2 = "SELECT * FROM [BUS] WHERE BUS='" & Trim(str1) & "'" '定义查询字符串

rst.Open str2 '打开记录集

If Not rst.EOF Then '若记录集不为空,显示内容

gID = rst("id") '记录关键字

txtbus.Text = rst("bus") '线路名

txtBeginEnd.Text = rst("beginend") '运行区间

cmbTickType.Text = rst("ticktype") '售票类型

cmbPrice.Text = rst("price") '票价

If rst("ic") = True Then '支持IC

optIC1.Value = True

Else '不支持IC

optIC2.Value = True

End If

txtRuntime.Text = rst("runtime") '运行时间

txtCompany.Text = rst("company") '公交公司

If Not IsNull(rst("memo")) Then '若备注不为空

txtMemo.Text = rst("memo") '显示备注

End If

Else '若记录集为空,清空显示内容

txtbus.Text = ""

txtBeginEnd.Text = ""

cmbTickType.Text = ""

cmbPrice.Text = ""

optIC2.Value = True

txtRuntime.Text = ""

txtCompany.Text = ""

txtMemo.Text = ""

End If

rst.Close '关闭记录集

cnn.Close '关闭数据库连接

End Sub

Function CheckInput() As Boolean '检查用户输入的内容

CheckInput = False '设置函数初始返回值为False

If Trim(txtbus.Text) = "" Then '若“线路名”为空

MsgBox "请输入线路名称!", vbCritical + vbOKOnly, "警告" '提示信息

txtbus.SetFocus '设置输入焦点

Exit Function '退出函数

End If

If Trim(txtBeginEnd.Text) = "" Then '若“运行区间”为空

MsgBox "请输入该线路的运行区间!", vbCritical + vbOKOnly, "警告" '提示信息

txtBeginEnd.SetFocus '设置输入焦点

Exit Function '退出函数

End If

If Trim(txtRuntime.Text) = "" Then '若“运行时间”为空

MsgBox "请输入该线路的运行时间!", vbCritical + vbOKOnly, "警告" '提示信息

txtRuntime.SetFocus '设置输入焦点

Exit Function '退出函数

End If

If Trim(txtCompany.Text) = "" Then '若“公交公司”为空

MsgBox "请输入该线路所属公司!", vbCritical + vbOKOnly, "警告" '提示信息

txtCompany.SetFocus '设置输入焦点

Exit Function '退出函数

End If

CheckInput = True '设置函数返回值为True

End Function

Private Sub LockControl(bShow As Boolean) '锁定窗体中的部分控件

txtbus.Locked = bShow

txtBeginEnd.Locked = bShow

cmbTickType.Locked = bShow

cmbPrice.Locked = bShow

optIC1.Enabled = Not bShow

optIC2.Enabled = Not bShow

txtRuntime.Locked = bShow

txtCompany.Locked = bShow

txtMemo.Locked = bShow

End Sub

5)通过站名进行添加,修改,删除,上移,下移,界面如图:

5.6 管理站点图

管理公交信息代码:

Private Sub cmdAdd_Click() '添加站点信息到列表框

Dim str1 As String, i As Long '定义临时变量

str1 = Trim(cmbStation.Text) '获取组合框中的文本

If str1 = "" Then '若输入或选择的站名为空

MsgBox "请选择或输入站名!", vbCritical + vbOKOnly, "提示" '显示提示信息

cmbStation.SetFocus '将输入焦点设置到cmbStation组合框

Exit Sub '退出当前过程

End If

For i = 0 To lstStation.ListCount - 1 '循环查询列表框中每一项

If str1 = lstStation.List(i) Then '若与输入的内容相同

MsgBox "该线路中已有【" & str1 & "】!", vbCritical + vbOKOnly, "提示" '显示提示信息

Exit Sub '退出当前过程

End If

Next

lstStation.AddItem str1 '将输入的内容添加到列表框

cmdCancel.Visible = True '显示“取消”按钮

cmdSave.Visible = True '显示“保存”按钮

cmbStation.SetFocus '设置焦点到组合框

End Sub

Private Sub cmdCancel_Click() '“取消”按钮事件代码

cmdCancel.Visible = False '隐藏“取消”按钮

cmdSave.Visible = False '隐藏“保存”按钮

ShowStation '重新从数据库中读出数据

End Sub

Private Sub cmdDel_Click() '“删除”按钮事件代码

Dim ret As Long '定义临时变量保存用户选择

If lstStation.ListIndex < 0 Then '若没有选择列表框中的内容

MsgBox "请首先选择列表框中的站名!", vbCritical + vbOKOnly, "提示" '显示提示信息

Exit Sub '退出当前过程

End If

'删除前的提示

ret = MsgBox("真的要删除【" & lstStation.Text & "】?", vbQuestion + vbYesNo, "确认")

If ret = vbYes Then '若用户选择“是”按钮

lstStation.RemoveItem lstStation.ListIndex '删除列表框中的选中项

cmdCancel.Visible = True '显示“取消”按钮

cmdSave.Visible = True '显示“保存”按钮

End If

End Sub

Private Sub cmdDown_Click() '“下移”按钮事件代码

MoveList 1 '调用过程向下移动选中项

cmdCancel.Visible = True '显示“取消”按钮

cmdSave.Visible = True '显示“隐藏”按钮

End Sub

Private Sub cmdExit_Click() '“退出”按钮事件代码

Unload Me '卸载当前窗体

End Sub

Private Sub cmdModify_Click() '“修改”按钮事件代码

Dim str1 As String, i As Long '定义临时变量

If lstStation.ListIndex < 0 Then '若未选中列表框中的项

MsgBox "请首先选择列表框中的站名!", vbCritical + vbOKOnly, "提示" '显示提示信息

Exit Sub '退出当前过程

End If

str1 = Trim(cmbStation.Text) '获取组合框中输入或选择的文本

If str1 = "" Then '若输入或选择的文本为空

MsgBox "请选择或输入站名!", vbCritical + vbOKOnly, "提示" '显示提示信息

cmbStation.SetFocus '设置输入焦点到组合框

Exit Sub '退出当前过程

End If

For i = 0 To lstStation.ListCount - 1 '循环比较列表框中的已有项

If str1 = lstStation.List(i) Then '若与输入内容相同

MsgBox "该线路中已有【" & str1 & "】!", vbCritical + vbOKOnly, "提示" '显示提示信息

Exit Sub '退出当前过程

End If

Next

lstStation.List(lstStation.ListIndex) = str1 '将输入内容更新到指定项

cmdCancel.Visible = True '显示“取消”按钮

cmdSave.Visible = True '显示“保存”按钮

cmbStation.SetFocus '设置输入焦点到组合框

End Sub

Private Sub cmdSave_Click() '“保存”按钮事件代码

Dim cnn As New ADODB.Connection '定义数据库连接变量

Dim rst As New ADODB.Recordset '定义记录集变量

Dim i As Long, str1 As String

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=stu03 " '设置数据库连接字符串

cnn.Open '打开数据库连接

cnn.Execute "DELETE FROM [station] WHERE [busid]=" & gID '删除该线路原有数据

For i = 0 To lstStation.ListCount - 1 '循环保存列表框中的每项

str1 = "INSERT INTO [station]([busid],[station],[ordar]) VALUES(" '定义SQL语句保存数据

str1 = str1 & gID & ",'" '线路ID

str1 = str1 & lstStation.List(i) & "'," '站名

str1 = str1 & i + 1 & ")" '序号

cnn.Execute str1 '执行SQL语句

Next

cnn.Close '关闭数据库连接

cmdCancel.Visible = False '隐藏“取消”按钮

cmdSave.Visible = False '隐藏“保存”按钮

End Sub

Private Sub cmdUp_Click() '“上移”按钮事件代码

MoveList -1

cmdCancel.Visible = True

cmdSave.Visible = True

End Sub

Private Sub Form_Load()

Dim cnn As New ADODB.Connection '定义数据库连接变量

Dim rst As New ADODB.Recordset '定义记录集变量

cnn.ConnectionString = " Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=stu03" '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst.ActiveConnection = cnn '设置记录集的数据库连接

rst.Open "SELECT [bus] FROM [bus]" '打开记录集,得到线路名数据

cmbbus.Clear '清除列表框中原有内容

Do While Not rst.EOF '循环处理记录集中的数据

cmbbus.AddItem rst(0).Value '将线路名添加到组合框中

rst.MoveNext '处理下一记录

Loop

If cmbbus.ListCount > 0 Then '列表框中有数据

cmbbus.ListIndex = 0 '选中第1个数据

End If

rst.Close '关闭记录集

rst.Open "SELECT DISTINCT([station]) FROM [station] ORDER BY [station]"

cmbStation.Clear

Do While Not rst.EOF '循环处理记录集中的数据

cmbStation.AddItem rst(0).Value '将站名添加到组合框中

rst.MoveNext '处理下一记录

Loop

rst.Close

cnn.Close '关闭数据库连接

End Sub

Private Sub cmbbus_Click()

Dim cnn As New ADODB.Connection '定义数据库连接

Dim rst As New ADODB.Recordset '定义记录集

Dim str1 As String, str2 As String '临时字符串变量

str1 = cmbbus.List(cmbbus.ListIndex) '获取组合框中的选中项(可介绍一下列表框)

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=stu03 " '设置数据库连接字符串

cnn.Open '打开数据库连接

Set rst.ActiveConnection = cnn '设置记录集的数据库连接

str2 = "SELECT * FROM [BUS] WHERE BUS='" & Trim(str1) & "'" '定义查询字符串

rst.Open str2 '打开记录集

If Not rst.EOF Then '若记录集不为空,显示内容

gID = rst("id") '记录关键字

frameBus.Caption = rst("bus") '线路名

labBus1.Caption = rst("beginend") '运行区间

labBus2.Caption = rst("ticktype") '售票类型

labBus3.Caption = rst("price") '票价

If rst("ic") = True Then '支持IC

labBus4.Caption = "支持IC"

Else '不支持IC

labBus4.Caption = "不支持IC"

End If

labBus5.Caption = rst("runtime") '运行时间

labBus6.Caption = rst("company") '公交公司

If Not IsNull(rst("memo")) Then '若备注不为空

labBus7.Caption = rst("memo") '显示备注

End If

ShowStation '调用过程显示指定线路的站名

Else '若记录集为空,清空显示内容

lstStation.Clear

labBus1.Caption = ""

labBus2.Caption = ""

labBus3.Caption = ""

labBus4.Caption = ""

labBus5.Caption = ""

labBus6.Caption = ""

labBus7.Caption = ""

End If

rst.Close '关闭记录集

cnn.Close '关闭数据库连接

End Sub

Sub ShowStation()

Dim cnn As New ADODB.Connection '定义数据库连接

Dim rst As New ADODB.Recordset '定义记录集

Dim str1 As String '临时字符串变量

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=公交车查询系统;Data Source=stu03" '设置数据库连接字符串

cnn.Open '打开数据库连接

str1 = "SELECT * FROM [station] WHERE [busid]=" & gID & " ORDER BY [ordar]"

Set rst = cnn.Execute(str1)

lstStation.Clear '表除列表框中的内容

Do While Not rst.EOF '循环处理记录集中的数据

lstStation.AddItem rst("station").Value '将站点名添加到列表框中

rst.MoveNext '处理下一记录

Loop

End Sub

Private Sub lstStation_Click() '列表框单击事件代码

If lstStation.ListIndex >= 0 Then '若选中列表框中的某项

cmbStation.Text = lstStation.List(lstStation.ListIndex) '将选中项内容显示到组合框中

cmdModify.Enabled = True '允许使用“修改”按钮

cmdDel.Enabled = True '允许使用“删除”按钮

cmdUp.Enabled = True '允许使用“上移”按钮

cmdDown.Enabled = True '允许使用“下移”按钮

End If

End Sub

Private Function MoveList(ByVal Index As Long) '移动列表框中的项目顺序

Dim str1 As String, X As Long '定义临时变量

With lstStation

X = .ListIndex '获取选中项在列表框中的序号

If X < 0 Or X + Index < 0 Or X + Index > .ListCount - 1 Then Exit Function '如果未选中则不进行移动

str1 = .Text '获取选中的文本

.RemoveItem X '删除选中项

.AddItem str1, X + Index '将选中文本添加到指定位置

.ListIndex = X + Index '设置选中序号

End With

End Function



6 总结

通过两周的课程设计,感觉收获颇多!对于这个系统,刚开始着手时手足无措,不知道怎样去完成这个项目,感觉学的理论知识不能与实践相结合,但是通过实践过程,让我学会了如何把知识的融会贯通,更是对本学期学习的一个总结。

前期的设计工作很重要,让我也深深感觉到了团队合作重要性!通过胡贤德老师对整个过程的介绍以及教我们如何去分析表之间的关系,如何去简化过程,如何去思考将一些过程优化!还有其他同学对我们做的东西提出的一些建议,感觉自己的思想开阔了很多很多,同时也增长了见识。

同时认为我们应该时刻发扬“Teamwork”精神,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们合作成功的一项非常重要的保证。而这次课程设计也正好锻炼我们这一点,这也是非常宝贵的。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有书本上的一些知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力,这样才能让自己觉得学的知识用到了实用处,增强自己的信心和成就感。

这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在胡老师的辛勤指导下,终于游逆而解。同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!



7 参考文献

[1] 数据库系统原理及应用教程/苗雪兰等编著.北京:机械工业出版社,20082013.2 重印)ISBN 978-7-111-08594-2

[2] 数据库课程案例精编/杨昭主编.北京:中国水利水电出版社,2009 ISBN 978-7-5084-3433-1

[3] SQL Serever2000 数据库系统开发实例导航/刘韬,楼兴华编著.北京:人民邮电出版社,2010.5 ISBN 978-7-115-12248-2

[4] 刘智勇刘径舟等编著.SQL SERVER 2008宝典.电子工业出版社,2011

[5]清汉计算机工作室.VISUAL BASIC 6.0 多媒体开发实例[M].机械工业版版社

[6]Visual Basic 6.0 数据库系统开发实例 刘韬 骆娟 何旭洪 人民邮电出版社

[7] 魏笑笑,王成军;基于B/S科技过程管理信息系统的设计与实现[J];电脑与信息技术;201105

[8] 王军;面向中小企业的项目管理系统设计与开发[D];南京理工大学;2010

[9] 李彦强,尹建伟,蔡铭,周忠信,董金祥;面向网络化制造的项目管理系统研究与实现[J];计算机应用研究;201010

数据库公交查询系统

相关推荐