(精品)城市公交查询系统(2013年优秀毕业设计)_第1页
(精品)城市公交查询系统(2013年优秀毕业设计)_第2页
(精品)城市公交查询系统(2013年优秀毕业设计)_第3页
(精品)城市公交查询系统(2013年优秀毕业设计)_第4页
(精品)城市公交查询系统(2013年优秀毕业设计)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录第一章 绪论2第二章 开发语言介绍32.1 系统开发环境32.2 开发工具32.3 Visual Basic的简介32.4 ACCESS简介4第三章 需求分析6第四章 系统实现94.1程序主界面模块94.2按起终点站查询模块194.3 中转站模块19第五章 软件测试31致 谢32参考文献33城市公交查询系统【摘要】我国城市公交乘客信息系统的发展处于一个较落后的水平,广大乘客可以获得信息的方式很少,为了解决这种问题,需要大力发展我国的城市公交乘客信息系统。出于这个目的,在老师的指导下,我设计了这个城市公交出行线路查询系统这个应用程序。在设计过程中,首先分析了我国城市公交乘客信息系统的发展现状,找出问题和不足。其次,在对公交乘客出行心理特征进行分析的基础上,考虑了乘客选择公交线路决策的因素,建立了基于时间价值和费用价值的公交线路选择合理的模型。在此基础上,进行程序关键部分的框架设计,理清程序设计思路。之后是程序关键部分的具体实现,包括关键程序原代码。最后完成功能介绍和使用说明。运用VB语言或方法,对线路查询系统进行了程序设计,并进行了模拟实验。本次设计的软件较为符合公交运营的实际情况,充分考虑了不同公交乘客的实际要求,运算速度较快,有较强的实际应用价值。【关键词】公交查询,VB,数据库第一章 绪论1.1我国城市公交乘客信息系统的现状 我国城市公交乘客信息系统的发展处于一个落后的水平,广大乘客可以获得信息的方式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发布和管理。我国公交乘客信息系统的现状特点如下:1.2 乘客可以获得的公交信息很少,而且方式主要是常规手段。我国乘客一般获得公交信息的方式局限于电话,交通图,向熟人问讯等常规方式。乘客可以获得的公交信息很少,除去线路,站点等基本信息以外,有关班次,车辆到离站时间的信息基本上没有。1.3 乘客出行中获得信息困难,基本上没有实时信息。除去在杭州,上海等少数几个城市,乘客可以通过分布于城市中的若干电子站牌获得一些公交车辆的运营信息以外,在其它城市“出行中”的乘客无法获得任何实时信息。在我国一些城市中,有不少装饰华美的公交站台,但在这些站台上却找不到实用的城市交通图。总而言之,我国乘客在出行中无论是“静态线路信息”还是“动态实时信息”都很难获得。1.4 缺乏专门的交通信息发布管理机构,乘客获得的信息准确性得不到保证。目前,我国大多数城市对于交通信息的发布没有专门的管理机构和规章制度。在城市交通信息服务需求小的情况下尚可应付。但随着城市交通信息服务需求的增长,从事交通信息服务的人员和企业数量的增加,需要有专门的管理机构和制度。当前的城市交通信息服务存在着混乱和低效的问题,有些甚至是对乘客的误导。1.5 我国公交乘客信息系统与网络的结合还是低层次的。在我国一些城市出现了基于网络的公交信息服务系统(例如中国公交查询网,它可提供全国大约七十多个城市的公交系统信息查询),但总体上还是处于一个较低的层次。这些信息系统还处于一种静态的公交信息查询系统,还不能作到为乘客的出行自动的生成出行计划或方案。第二章 开发语言介绍2.1 系统开发环境系统开发环境包括硬件平台和软件平台两种。硬件平台是指开发与运行所需要的硬件环境,主要包括计算机机型及硬件配置。由于本系统是一个小型的播放器,因此对计算机硬件的要求不高,比较经济,只要配备有PII300处理器(或以上)、64M内存(或以上)、20G硬(或以上)的普通微机即可顺利运行。软件平台是指系统开发与运行的软件环境。本系统在开发时选用了稳定性较强的Windows XP中文专业版和Visual Basic6.0作为开发语言,开发出的应用系统稳定性较高。Visual Basic 6.0具有可视化的开发环境,可以快速完成系统的开发。2.2 开发工具在确定了操作系统后,就该选择开发工具了。经过了综合的比较而且最重要的是本人在学校期间学习的就是Visual Basic。 先我们来了介绍一下Visual Basic以及微软提供了哪些特点。2.3 Visual Basic的简介首先,我们还从Visual Basic这个名字开始,来认识这个软件。所谓“Visual”指的是开发图形用户界面 (GUI) 的方法。它不需编写大量的代码去描述界面元素的外观和位置,而只要把预先建立的对象添加到屏幕上的某一位置即可。如果已使用过诸如 Paint 之类的绘图程序,则实际上已掌握了创建用户界面的必要技巧。“Basic”指的是 BASIC (Beginners All-Purpose Symbolist Instruction Code) 语言,一种在计算技术发展历史上应用得最为广泛的编程语言。Visual Basic 在原有 BASIC 语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和 Windows GUI 有直接关系。专业人员可以用 Visual Basic 实现其它任何 Windows 编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。Visual Basic 不仅是 Visual Basic 编程语言。Visual Basic 编程系统和 VBA 都使用这一语言。Visual Basic Scripting Edition (VBScript) 是广泛使用的脚本语言,它是 Visual Basic 语言的子集。这样,在学习 Visual Basic 中得到的经验可应用到所有这些领域中。接着,我们再从Visual Basic的发展历史来进一步地认识一下它。Visual Basic的最初版本是Visual Basic1.0,那时的Visual Basic只是简单地以对象的属性为中心来进行编程。到了Visual Basic2.0时,开始正式地采用面向对象技术,其有一个重要的新特性就是可拥有对象变量,并把Variant型变量作为缺省数据类型变量。没过多久Visual Basic的下两个版本Visual Basic3.0和Visual Basic4.0接踵而至,一种内建的新的控件类型数据控件,能够使创建一个与数据库交互作用的应用程序变得令人惊讶的容易。在微软的其它应用程序,如WORD字处理软件、EXCEL电子报表软件、ACCESS数据库软件中都做了改变,使得它们可以与Visual Basic一致工作。这种新技术被称作为Visual Basic For Applications,它帮助实现了Visual Basic的最初设想。理论上,人们总是能够通过某种叫做动态数据交换(DDE)的技术使视窗系统应用程序彼此交互。但那样既慢而且又麻烦。Visual Basic的完美之处在于它能使程序员获得一块数据如报表,并将它看作是Visual Basic的对象。其目的就是要使视窗系统下的每一件事情都支持同样的易于使用的高级语言。Visual Basic5.0出现以后,在某些方面有了重大的突破。它给予了程序员长期期待的不用离开Visual Basic环境,就可以创建新的定制控件类型和创建其它项目类型的能力。除了一般应用程序外,程序员还能创建文档、DLLs、OLE服务器和ActiveX控件。当Visual Basic逐渐复杂时,世界已经在围着它转了。项目类型的增加不是用来迷惑程序员,而是提供灵活性的。视窗系统已经成为一个特别丰富的环境,可使应用程序彼此交流和共享数据。我们现在所使用的Visual Basic6.0被看着是Visual Basic的网络版本。可以看出它投入了相当一部分的精力去支持微软日益在Internet和分布式(网络)计算方面的重视程度。虽然它没有象Visual Basic5.0所引起的那样激动人心,但它还是在某些方面做了一些有用的改进。其最重要的一个改进就是增加了ADO数据控件,它可以缩小本地和远程数据控件之间的差别。换句话说,程序员在很大程度上可以与数据库交互作用,而不用担心网络上由谁来提供服务。2.4 ACCESS简介数据库选用Microsoft公司的Access产品作为数据库应用程序。目前的Access 2000是Microsoft强大的桌面数据库平台的第六代产品,是3 2位Access的第三个版本。Access有以下一些基本定义:(1)数据库是一个包含各种Access “对象”(表、查询、窗体、报表、宏和模块)的文件,Access中所有工作都是建立在此基础之上的。(2)表是存放数据的容器,被设计成行和列的格式,就像电子表中的那样。每一列叫做一个“字段”,包含特定类型的信息,如姓名或学历。每一行称为一个“记录”,包含与单个实体有关的所有信息,如某个员工的姓名、性别、所在部门、学历等。对于像Access这样的关系数据库管理程序,一个数据库通常包含几个存放相关数据的不同表。(3)查询是一个Access对象,它询问数据库中有关数据的问题。根据设计方法的不同,查询能够在数据库中检索并组合来自不同表的数据。例如,可以设计一个查询来告知在公司中工作超过1年的职员有多少。查询还可以对一组数据执行操作,如更新或删除某组记录。(4)窗体是一个窗口,它提供一种很方便的途径来查看数据库中已有记录或向数据库中增添新记录。在Access中,可以创建一个窗体,用来同时查阅单个表或多个表中的数据,还可以打印和显示窗体。(5)报表是一个Access对象,设计来显示数据,其作用类似于窗体,但主要是用于数据打印,不能输入数据。(6)页是一种特殊类型的窗体,它使用户能够利用Web浏览器查看和编辑Access的表。(7)宏用来保存Access中的一系列操作。可自动执行一些日常的任务,以便简化在Access中的工作。(8)模块是用Visual Basic for Applications(VBA) 编写的过程,VBA是Access的基础程序设计语言。利用VBA可以编写程序代码来完成Access宏所不能完成的特定任务。 第三章 需求分析3.1计算机网络计算机网络是指将多台具有独立功能的计算机,通过通信线路和通信设备连接起来,在网络软件的支持下实现数据通信和资源共享的计算机系统。计算机网络的规模有大有小,大的可以覆盖全球,小的仅局限于一个办公室。现在一般按照网络覆盖的地理范围将计算机网络分为三类:局域网(LAN)、城域网(MAN)、广域网(WAN)。3.2 系统功能1、基于浏览器(B/S模式)的公交线路分类查询;2、数据的录入、修改、添加、删除。3.3 公交查询系统设计分析根据数据库系统生存期的设计方法,从数据库应用系统和开发的全过程来考虑,将数据库应用系统设计分为以下几个阶段:1)规划;2)需求分析;3)概念设计;4)逻辑设计;5)物理设计。3.4 应用需求分析要设计一个良好的公交查询系统,就必须首先明确该应用环境对系统的要求。公交查询系统的应用背景为:方便市民搭乘公交车出行;手动(目前)、自动(将来)、及时更新查询数据。因此,该系统需满足以下几方面需求:1、查询功能:系统需要提供几种不同方式的查询手段,以实现灵活方便地管理整个系统。2、数据的更新修改:更新:系统允许管理员级别的用户对数据进行更新、修改并且存盘操作;编辑:系统允许管理员级别的用户对数据进行编辑、删除的操作,保证现库的真实性与实时性。3、打印输出(暂未实现):系统可以将用户查询到的内容动态地生成报表,并打印输出。3.5 系统功能模块划分 公交查询系统功能划分模块如下: 1、查询系统模块 该模块实现公交查询功能。可实现按起点中转站终点查询查询和按线路查询两种查询方式。 录入系统模块该模块实现数据的录入、修改、删除功能。该模块由公交站点管理与公交线路管理两部分组成。3.6系统数据库设计 概念设计概念设计的目标是产生反映城市公交查询系统需求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的。1、ER模型ER模型是对现实世界的一种抽象。它的主要成分是实体、联系和属性。使用这三种成分,我们可以建立许多应用环境的ER模型。2、ER模型的操作在利用ER模型进行数据库概念设计的过程中,常常需要对ER图进行种种变换。这些变换又称为ER模型的操作,包括实体类型、联系类型和属性的分裂、合并和增删等等。3、利用ER方法的数据库概念设计利用ER方法进行数据库的概念设计,可以分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局ER模式,最后对全局ER模式进行优化,得到最终的ER模式,即概念模式。设计局部的ER模式通常,一个数据库系统都是为多个不同用户服务的。各个用户对数据的观点可能不一样,信息处理需求也可能不同。在设计数据库概念结构时,为了更好地模拟现实世界,一个有效的策略是“分而治之”,即先分别考虑各个用户的信息需求,形成局部概念结构,然后再综合成全局结构。在ER方法中,局部概念结构又称为局部ER模式,其图形表示称为ER图。实体和属性的定义如下:站点(站点编号,站点名称,站点类别)线路(线路编号,始发时间,终发时间,备注)线路站点对应(线路编号,站点名称)城市交通查询系统按车次查询按起终点站查询第四章 系统实现4.1程序主界面模块 本系统可以查询各个车次的各个站点,用户可以清楚该线路各个站点的名称,本系统操作简单,适合大众用户使用. 本模块界面如下所示:主要代码如下:Private Sub Command1_Click()If Combo1.Text = Then MsgBox 您没有输入要查询的车次!, vbInformation + vbOKOnly, 提示! Combo1.SetFocus Exit SubEnd Ifgcaf = 1Cbm.Visible = FalseLabel5.Visible = FalseMSF1(0).Visible = TrueMSF1(1).Visible = FalseMSF1(2).Visible = Falsetxtsql = select *from bus where number = & Trim(Combo1.Text) & showdata 0Label7.Visible = TrueEnd SubPrivate Sub Command2_Click()Command4.Caption = 查找经过站点最小的线路gcaf = 2If cbs.Text = Then MsgBox 您没有输入要查询的起点站!, vbInformation + vbOKOnly, 提示! cbs.SetFocus Exit SubEnd IfIf Cbe.Text = Then MsgBox 您没有输入要查询的终点站!, vbInformation + vbOKOnly, 提示! Cbe.SetFocus Exit SubEnd IfIf Cbm.Visible = False Or Cbm.Text = Thendigein = 0 showSEdata cbs.Text, Cbe.Text, 0 digeitemp = digein Label7.Visible = TrueElse If Cbm.Text Then Label7.Visible = True End If digein = 0 showSEdata cbs.Text, Cbm.Text, 1 把转发站作为终点站进行查询 digeitemp = digein digein = 0 showSEdata Cbm.Text, Cbe.Text, 2 把转发站作为起点站进行查询 digeitemp = digeinEnd IfEnd SubPrivate Sub Command3_Click()Load mapmap.ShowEnd SubPrivate Sub Command4_Click()以下代码写得不是很好,有点乱的感觉其思路是先统计要经过的车站个数,再把最小车站个数的线路显示出来还有要注意的一点是在显示出了最近车站的线路后,为了返回开始查询到的线路,我用了MSF1(i)做为存储Dim intmin As IntegerDim intcount As IntegerDim alloks() As IntegerDim rs As IntegerDim oksn As IntegerDim strbij As StringDim bfin As Booleanintmin = 10000If gcaf = 2 ThenIf Command4.Caption = 查找经过站点最小的线路 Then Command4.Caption = 返回 oksn = 0If MSF1(0).Visible = True Then ReDim alloks(MSF1(0).Rows) MSF1(1).Clear MSF1(1).Rows = MSF1(0).Rows For k = 0 To MSF1(0).Rows - 1 intcount = 9999 bfin = False For t = 0 To NC + 2 If MSF1(0).TextMatrix(k, t) = Then Exit For End If MSF1(1).TextMatrix(k, t) = MSF1(0).TextMatrix(k, t) If bfin = False Then If cbs.Text = MSF1(0).TextMatrix(k, t) Or Cbe.Text = MSF1(0).TextMatrix(k, t) Then If intcount = 9999 Then intcount = 0 Else intcount = intcount + 1 bfin = True End If Else If intcount 9999 Then intcount = intcount + 1 End If End If End If Next MSF1(1).TextMatrix(k, NC + 2) = MSF1(0).TextMatrix(k, NC + 2) alloks(oksn) = intcount oksn = oksn + 1 If intcount intmin Then intmin = intcount End If Next MSF1(0).Clear rs = 1 With MSF1(0) .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) Next .TextMatrix(0, NC + 2) = 备注 End With For s = 0 To MSF1(1).Rows - 1 If alloks(s) = intmin Then For r = 0 To NC + 4 If MSF1(1).TextMatrix(s, r) = Then Exit For End If MSF1(0).TextMatrix(rs, r) = MSF1(1).TextMatrix(s, r) Next rs = rs + 1 End If Next MSF1(0).Refresh Else intpart = MSF1(1).Rows ReDim alloks(MSF1(1).Rows + MSF1(2).Rows) MSF1(0).Clear MSF1(0).Rows = MSF1(1).Rows + MSF1(2).Rows For k = 0 To MSF1(1).Rows - 1 intcount = 9999 bfin = False For t = 0 To NC + 2 If MSF1(1).TextMatrix(k, t) = Then Exit For End If MSF1(0).TextMatrix(k, t) = MSF1(1).TextMatrix(k, t) If bfin = False Then If cbs.Text = MSF1(1).TextMatrix(k, t) Or Cbm.Text = MSF1(1).TextMatrix(k, t) Then If intcount = 9999 Then intcount = 0 Else intcount = intcount + 1 bfin = True End If Else If intcount 9999 Then intcount = intcount + 1 End If End If End If Next MSF1(0).TextMatrix(k, NC + 2) = MSF1(1).TextMatrix(k, NC + 2) alloks(oksn) = intcount oksn = oksn + 1 If intcount intmin Then intmin = intcount End If Next MSF1(1).Clear rs = 1 With MSF1(1) .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) Next .TextMatrix(0, NC + 2) = 备注 End With For s = 0 To intpart - 1 If alloks(s) = intmin Then For r = 0 To NC + 4 If MSF1(0).TextMatrix(s, r) = Then Exit For End If MSF1(1).TextMatrix(rs, r) = MSF1(0).TextMatrix(s, r) Next rs = rs + 1 End If Next MSF1(1).Refresh intmin = 9999 For k = 0 To MSF1(2).Rows - 1 intcount = 9999 bfin = False For t = 0 To NC + 2 If MSF1(2).TextMatrix(k, t) = Then Exit For End If MSF1(0).TextMatrix(k + MSF1(1).Rows, t) = MSF1(2).TextMatrix(k, t) If bfin = False Then If Cbe.Text = MSF1(2).TextMatrix(k, t) Or Cbm.Text = MSF1(2).TextMatrix(k, t) Then If intcount = 9999 Then intcount = 0 Else intcount = intcount + 1 bfin = True End If Else If intcount 9999 Then intcount = intcount + 1 End If End If End If Next MSF1(0).TextMatrix(k, NC + 2) = MSF1(2).TextMatrix(k, NC + 2) alloks(oksn) = intcount oksn = oksn + 1 If intcount intmin Then intmin = intcount End If Next MSF1(2).Clear With MSF1(2) .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) Next .TextMatrix(0, NC + 2) = 备注 End With rs = 1 For s = intpart To MSF1(1).Rows + MSF1(2).Rows - 1 If alloks(s) = intmin Then For r = 0 To NC + 4 If MSF1(0).TextMatrix(s, r) = Then Exit For End If MSF1(2).TextMatrix(rs, r) = MSF1(0).TextMatrix(s, r) Next rs = rs + 1 End If Next MSF1(2).Refresh End IfElseIf MSF1(0).Visible = True Then Command4.Caption = 查找经过站点最小的线路 MSF1(0).Clear With MSF1(0) .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) Next .TextMatrix(0, NC + 2) = 备注 End With For Y = 0 To MSF1(1).Rows - 1 For X = 0 To NC + 2 If MSF1(1).TextMatrix(Y, X) = Then Exit For End If MSF1(0).TextMatrix(Y, X) = MSF1(1).TextMatrix(Y, X) Next MSF1(0).TextMatrix(Y, NC + 2) = MSF1(1).TextMatrix(Y, NC + 2) Next MSF1(0).Refresh MSF1(1).ClearElse Command4.Caption = 查找经过站点最小的线路 MSF1(1).Clear With MSF1(1) .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) Next .TextMatrix(0, NC + 2) = 备注 End With For Y = 0 To intpart - 1 For X = 0 To NC + 4 If MSF1(0).TextMatrix(Y, X) = Then Exit For End If MSF1(1).TextMatrix(Y, X) = MSF1(0).TextMatrix(Y, X) Next MSF1(1).TextMatrix(Y, NC + 2) = MSF1(0).TextMatrix(Y, NC + 2) Next MSF1(1).Refresh MSF1(2).Clear With MSF1(2) .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) Next .TextMatrix(0, NC + 2) = 备注 End With For Y = intpart To MSF1(0).Rows - 1 For X = 0 To NC + 4 If MSF1(0).TextMatrix(Y, X) = Then Exit For End If MSF1(2).TextMatrix(Y - intpart, X) = MSF1(0).TextMatrix(Y, X) Next MSF1(2).TextMatrix(Y - intpart, NC + 2) = MSF1(0).TextMatrix(Y, NC + 2) Next MSF1(2).Refresh MSF1(0).ClearEnd IfEnd IfEnd IfEnd SubPrivate Sub Form_Load()loadform.lblstatus = Loading . 正在联接所需的数据库loadform.RefreshAdodc1.ConnectionString = connstringAdodc1.CommandType = adCmdTableAdodc1.RecordSource = busAdodc1.Refreshloadform.lblstatus.Caption = Loading . 正在初始化所需控件loadform.Refreshtm = 0Text1.Visible = FalseLabel5.Visible = Falsegcaf = 0 用来标志用什么方式来进行查询For i = 0 To NCText2(i).Visible = FalseNextbcb1 = Falsebcbm = Falsebcbe = Falsebcbs = Falsedigein = 0digeitemp = 0showtitle (0)Form1.BackColor = 14321052For i = 0 To 2MSF1(i).BackColorBkg = 11763820Nextloadform.lblstatus.Caption = Loading . 正在检索所有的车站名loadform.RefreshCall showallstationFor s = 0 To cbs.ListCount Cbe.AddItem cbs.List(s)NextCbe.RemoveItem 0loadform.lblstatus.Caption = 初始化成功!loadform.RefreshUnload loadformEnd Sub4.2 按起终点站查询模块用户可以根据自己的实际需要,输入自己现在的地点,再输入要到达的地点,然后点查询,如果出现弹窗,意思就是没有车次是直达该站的,询问是否要转车,点确定的话,可以直接查询转车的路线本模块界面如下所示:4.3 中转站模块 用户点确定后,本系统自动列出可转车的车次,站点,中转站名是哪个,等等站点信息.本模块如下所示:主要代码如下:Private Sub Command2_Click()Command4.Caption = 查找经过站点最小的线路gcaf = 2If cbs.Text = Then MsgBox 您没有输入要查询的起点站!, vbInformation + vbOKOnly, 提示! cbs.SetFocus Exit SubEnd IfIf Cbe.Text = Then MsgBox 您没有输入要查询的终点站!, vbInformation + vbOKOnly, 提示! Cbe.SetFocus Exit SubEnd IfIf Cbm.Visible = False Or Cbm.Text = Thendigein = 0 showSEdata cbs.Text, Cbe.Text, 0 digeitemp = digein Label7.Visible = TrueElse If Cbm.Text Then Label7.Visible = True End If digein = 0 showSEdata cbs.Text, Cbm.Text, 1 把转发站作为终点站进行查询 digeitemp = digein digein = 0 showSEdata Cbm.Text, Cbe.Text, 2 把转发站作为起点站进行查询 digeitemp = digeinEnd IfEnd SubPrivate Sub Command3_Click()Load mapmap.ShowEnd SubPrivate Sub Command4_Click()以下代码写得不是很好,有点乱的感觉其思路是先统计要经过的车站个数,再把最小车站个数的线路显示出来还有要注意的一点是在显示出了最近车站的线路后,为了返回开始查询到的线路,我用了MSF1(i)做为存储Dim intmin As IntegerDim intcount As IntegerDim alloks() As IntegerDim rs As IntegerDim oksn As IntegerDim strbij As StringDim bfin As Booleanintmin = 10000If gcaf = 2 ThenIf Command4.Caption = 查找经过站点最小的线路 Then Command4.Caption = 返回 oksn = 0If MSF1(0).Visible = True Then ReDim alloks(MSF1(0).Rows) MSF1(1).Clear MSF1(1).Rows = MSF1(0).Rows For k = 0 To MSF1(0).Rows - 1 intcount = 9999 bfin = False For t = 0 To NC + 2 If MSF1(0).TextMatrix(k, t) = Then Exit For End If MSF1(1).TextMatrix(k, t) = MSF1(0).TextMatrix(k, t) If bfin = False Then If cbs.Text = MSF1(0).TextMatrix(k, t) Or Cbe.Text = MSF1(0).TextMatrix(k, t) Then If intcount = 9999 Then intcount = 0 Else intcount = intcount + 1 bfin = True End If Else If intcount 9999 Then intcount = intcount + 1 End If End If End If Next MSF1(1).TextMatrix(k, NC + 2) = MSF1(0).TextMatrix(k, NC + 2) alloks(oksn) = intcount oksn = oksn + 1 If intcount intmin Then intmin = intcount End If Next MSF1(0).Clear rs = 1 With MSF1(0) .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) Next .TextMatrix(0, NC + 2) = 备注 End With For s = 0 To MSF1(1).Rows - 1 If alloks(s) = intmin Then For r = 0 To NC + 4 If MSF1(1).TextMatrix(s, r) = Then Exit For End If MSF1(0).TextMatrix(rs, r) = MSF1(1).TextMatrix(s, r) Next rs = rs + 1 End If Next MSF1(0).Refresh Else intpart = MSF1(1).Rows ReDim alloks(MSF1(1).Rows + MSF1(2).Rows) MSF1(0).Clear MSF1(0).Rows = MSF1(1).Rows + M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论