资源目录
压缩包内文档预览:
编号:25236721
类型:共享资源
大小:374.33KB
格式:ZIP
上传时间:2019-11-18
上传人:遗****
认证信息
个人认证
刘**(实名认证)
湖北
IP属地:湖北
20
积分
- 关 键 词:
-
公交车
查询
系统
- 资源描述:
-
公交车查询系统,公交车,查询,系统
- 内容简介:
-
毕业设计公交车查询管理系统摘 要1Abstract2第一章 引言411 课题背景412 系统简介51. 3 开发软件介绍6第二章 系统的分析821 系统开发的目标和思想922 系统的可行性分析13第三章 系统的设计1831 系统的功能结构设计1832 系统的数据库设计33 界面设计与代码设计2324结束语46致谢47参考文献49摘 要随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活中不可缺少的辅助工具。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。以前开发Windows应用软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在不同了,即使你没有接受过严格的程序设计训练,使用Visual Basic也一样能够开发出功能强大、适合自己特殊需求的应用程序了。Visual Basic继承了Basic语言易学易用的特点,特别适合于初学者学习Windows系统编程。 公交车查询管理系统用计算机管理公交车路线信息的一种计算机应用技术的创新,在计算机还未普及之前公交车查询管理都是由工作人们人工查询的方式来操作的.现在一般的公交车查询都采用计算机智能化管理,采用计算机作为工具的实用的计算机路线自动管理程序来帮助人们进行更有效的公交车路线查询。公交车查询管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。因为本人能力有限,加上时间紧迫,所以设计出来的本系统可能功能比较简单,另外本系统是单机版,不能实现网络互联操作,这些都有待于我在以后的工作学习中进一步改进。关键字:公交车查询管理,MIS,visual basic ,数据库AbstractWith economic development, social progress, the computer and went to work learning and our daily lives, we become an indispensable tool in everyday life. As science and technology continue to improve, computer science increasingly mature, and its powerful functions for the people to deeply understand that it has entered human society in various fields and is playing an increasingly important role. It has to go down to the daily work and life, such as word processing, information management, aided design, graphics and video processing, as well as education and training game entertainment. All people without special training will be able to use computers to complete numerous complex. However, although now the world has been filled with an over-abundance of software, but they still can not meet the special needs of the various users, it also had to develop software suited to their particular needs. Professional Windows application software development before the work is needed in many professional knowledge and competence through special training. Different now, even if you have not received strict procedures designed training, the use of Visual Basic also like to develop a powerful, and suited to their special needs applications. Visual Basic inherited Basic language learn user-friendly features, and are particularly suited to new learner learning Windows system programming. Transportation vehicles using computer management information management system of a computer model cars line information technology application innovation in the computer before the public has not yet universal car enquiries are managed by the working people to operate manual enquiries. Now the general public enquiries have adopted computer intelligent vehicle management using the computer as a tool for automatic computer line management procedures to help people more effectively model cars line enquiries. Public enquiry management system is a typical car information management system (MIS), including its main development background to the establishment and maintenance of the database and front-end application development 2. The request for the establishment of strong data consistency and integrity, good for the security of the data. For the latter request applications functions, such as easy to use features. After analysis, we use Microsoft visual basic development tool companies, the use of its various object-oriented development tools, especially data that can be easily accessible and concise window manipulation database intelligent objects, the first prototype application system in a short time and then, computation of the initial prototype system needs to constantly revise and improve until the formation of a viable system of user satisfaction. Because I limited capacity, coupled with time constraints, it designed the system may function relatively simple, and the system is single edition, not Internet operations network, which I have yet to learn that in future work to further improve. keyword : public car enquiries management MIS,visual basic database11 课题背景公交车查询管理系统用计算机管理公交车路线信息的一种计算机应用技术的创新,在计算机还未普及之前公交车查询管理都是由工作人们人工查询的方式来操作的.现在一般的公交车查询都采用计算机智能化管理,采用计算机作为工具的实用的计算机路线自动管理程序来帮助人们进行更有效的公交车路线查询。公交车查询管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。12 系统简介本系统主要方便人们查询自己的公交车路线,方便人们乘坐公交.本系统主要由以下几大功能组成:一. 按车次查询模块二. 按起终点站查询三. 查找经过站点最小的路线1. 开发软件介绍Visual Basic 6.0是Micrsoft公司出品的开发工具,Visual Basic是一种可视化的,面向对象的Windows开发语言,它具有易用,通用和开发效率高的特点。随着微软对它不断地改进以及计算机本身性能的提高,使得Visual Basic越来越适合一般的应用程序开发。正如Bill Gate所说,世界上绝大多数的Windows应用程序是用Visual Basic编写的。在众多的开发工具中,我们为什么要选择Visual Basic6.0呢?因为VB具有众多其它开发工具所没有的优点!具体介绍如下:u 开发的高效u 语言的高效u 编译的高效u 执行的高效u 维护的高效基于以上理由,我们毫不忧郁的选择了VB6.0做为我们的开发工具!主要的控件及其基本属性,事件简介u 命令按钮类的控件:1) Caption属性:用来显示在控件上的标题。2) Enable属性:控制控件的激活状态灰色或可用。3) Appearance属性:值为1时,则以3D效果显示该控件,0则不然。4) Backcolor属性:用来改变在按钮上显示图像的背景色。5) Cancel属性:该属性决定按钮是否为一个”取消”按钮。6) Default属性:决定哪一个命令按钮控件是窗体的缺省命令按钮.7) Font属性:控制各种文字字体类型.8) Left,top,height,width属性:设定控件的位置与大小.9) Style,picture属性:决定按钮的显示方式是否为图像形式出现.10) Visible属性:确定控件运行时是否为可见.11) Index属性:当控件为一控件数组时,此属性值为该控件在数组的下标值.12) DownPicture属性:设置/返回一个对图片的引用,该图片在按钮被单击处于压下状态时显示。13) DisabledPicture属性:设置/返回一个对图片的引用,该图片在控件无效时显示在控件中。14) MaskColor属性:设置/返回一个在按钮的图片中作为“掩码“的的颜色15) Picture属性:设置返回commandButton控件中要显示的图片。u 命令按钮类的事件:1) 单击事件Click事件(1) 触发与适用此事件是在一个命令按钮对象上按下然后释放一个鼠标按钮时发生。命令按钮的Click事件仅对当单击鼠标时发生。(2) 事件处理过程按钮单击事件的处理过程为: Private Sub object-Click(Index As Integer)其中Object为引发该事件的对象名称。如果是命令按钮的控件是数组,则需要使用Index参数标识该控件。2) 获得焦点GotFocus事件(1) 触发与适用 当命令按钮获得焦点产生该事件,获得焦点可以通过诸如Tab切换或单击对象之类的用户动作,或在代码中用SetFocus方法改变焦点来实现。(2) 事件处理过程命令按钮GotFoucs事件处理过程为:Private Sub Object-GotFocus(Index As Integer)3) LostFocus事件:当一个对象失去焦点时发生4) KeyDown事件:当命令按钮具有焦点时按下一个键时发生5) KeyUp事件:当命令按钮具有焦点时释放一个键时发生。6) KeyPress事件:当用户按下或松开一个ANSI键时发生。7) MouseDown事件:当在命令按钮上按下鼠标按钮时发生。8) MouseMove事件:当命令按钮上移动鼠标时发生。9) MouseUp事件:当在命令按钮上释放鼠标按钮时发生。 u 标签框类的控件类的控件:1) Caption属性:在应用程序界面上加入说明。2) Autosize属性:决定控件是否自动改变大小以显示其全部内容。3) Backstyle属性:用以指示标签是否透明.4) Bordstyle属性:用以设定控件是否有边框。u 文本框类的控件:1) Text属性:通过像text属性赋值的方法来改变该属性的值。2) Maxlength属性:该属性设定在文本框控件中能够输入的最大字符数。3) Multline属性:该属性设定text字符串中是否接受换行符。4) Scrollbars属性:该属性决定是否为文本框加滚动条。5) Passwordchar属性:该属性设定输入文本的特殊显示字符,在设计密码程序时非常有用。6) Change事件属性:文本框的内容发生改变时,相应的控件之间发生相应的改变,具有即时性。7) Keypress:事件由用户在文本框控件中按任意键触发。8) Alignment属性:设定控件中的文本对其方式9) Appearance属性:设定一个对象在运行时是否可以3D效果显示。10) BackColor属性:设置返回背景色11) BorderStyle属性:设置对象的边框样式12) DataField属性:设定数据使用者将被绑定到的字段名13) DataFormat属性:设定DataFormat对象,用于数据绑定14) DataMember属性:从数据供应程序提供的几个数据成员中返回/设定一个特定的数据成员15) DataSource属性:设定控件绑定的一个数据源16) DragIcon属性:设定图标,它将在拖放操作中作为指针显示17) DragMode模式:设定一个值,确定在拖放操作中所用方式18) Enabled属性:设置/返回运行时TextBox是否相应用户事件19) Font属性:设置/返回字体属性20) ForeColor属性:设置/返回文本的前景色21) Height属性:设置/返回TextBox的高度22) IMEMode属性:设置/返回数值用来确定输入方法编辑器的状态23) Index属性:设置/返回唯一的标识控件数组中该控件的编号24) Left属性:设置/返回TextBox控件的水平位置25) Locked属性:设置/返回TextBox中文本是否可编辑26) LinkItem属性:设置/返回DDE与另一个应用程序会话时,传给接受端的数据27) MaxLength属性:设置/返回一个值,指定在TextBox控件中能够输入的字符最大值28) MouseIcon属性:设置/返回自定义鼠标的图标29) Top属性:设置/返回TextBox控件的垂直位置30) Tag属性:存储过程所需的附加数据u 文本框类的事件:1) Change事件:当改变文本框内容时发生2) Click事件:鼠标单击控件时发生3) DblClick事件:用鼠标左键双击控件时发生4) DragDrop事件:在一个完整的拖放动作完成或使用Drag方法,并将其Action参数设置为2时发生5) DragOver事件:在拖放操作正在进行时发生6) GotFocus事件:当一个命令按钮获得焦点时发生7) LinkClose事件:当一个DDE对话结束时发生8) LinkError事件:当一个DDE对话框过程中出现错误时,该事件发生9) KeyDown事件:当命令按钮具有焦点时按下一个键时发生10) Validate事件:在焦点转换到另一个控件之前发生,此时该控件的Causes Validation 属性值设置为True u 单选按钮类的控件:1) Caption属性:显示在控件上的文本,是单选按钮的标题。2) Alignment属性:决定单选按钮的标题在控件上的位置。3) Enable属性:该控件为灰色时为false,表示运行时不可用。4) Index属性:属性值表示为单选按钮组成的控件中某个按钮的索引值。5) Tabindex属性:建立控件时,vb自动为其分配一个tabindex值,利用tab键可以在控件之间切换焦点。6) Value属性:反映控件状态的属性,返回true表示已选择了该按钮。7) Appearance 属性:设置/返回一个对象在运行时是否以3D效果显示。8) BackColor 属性:设置/返回背景色。9) Container 属性:设置/返回Form上的控件属性。10) DataField 属性:设置/返回数据使用者将被绑定到的字段名。11) DataFormat 属性:设置/返回DataFormat对象,一个绑定对象将附加到它。12) DisabledPicture 属性:设置/返回一个对图像的引用,该图片在控件无效时显示在控件中。13) DownPicture 属性:设置/返回一个对图片的引用,该图片在控件单击下处于压下状态时显示。14) DragMode 属性:设置/返回一个值,确定在拖放操作中所用的方式。15) Font 属性:设置/返回字体属性。16) FontBold 属性:设置/返回字体粗体样式。17) FontItalic 属性:设置/返回字体斜体样式。 18) FontStrikethru 属性:设置/返回字体删除线样式。19) FontUnderLine 属性:设置/返回字体下划线样式。20) FontName 属性:设置/返回控件中显示文本所用的字体大小。21) FontSize 属性:设置/返回控件中显示文本所用的字体大小22) Height 属性:设置/返回控件的高度。23) MaskColor 属性:设置/返回一个在控件的图片中作为掩码的颜色。24) MousePointer 属性:设置/返回一个值,该值指示在运行时当鼠标移动到对象上时显示的指针类型。u 单选按钮类的常用事件:1) Click 事件:鼠标单击控件时发生。2) DbClick事件: 当在一个对象上按下和释放鼠标按钮并再次按下和释放按钮时,该事件发生。3) DragDrop事件:在一个完整的拖放动作或使用Drag方法,并将其Action参数设置位2时,该事件发生。4) DragOver事件: 在拖放操作正在进行时发生。5) GotFocus事件: 当获的对象焦点时发生。6) LostFocus事件:当对象失去焦点时发生。7) KeyDown事件:当控件具有焦点时按下一个键时发生。8) KeyUp事件: 当控件具有焦点时释放一个键时发生。9) KeyPress事件:当用户按下或释放ANSI一个键时发生。10) MouseDown事件:当在控件上按下鼠标键时发生。11) MouseMove事件:在控件上移动鼠标时发生。12) MouseUp事件:在控件上释放鼠标时发生。u 复选按钮类的控件:1) Caption属性:缺省为check1。2) Index属性:该属性值为复选框控件数组的下标.3) Value属性:value为0表空白,为1表勾号,为2表示灰色勾号.4) Container属性:Form控件上的容器。5) DataChangeed属性:设置/返回一个值,指出被绑定的控件中的数据已经被某进程修改。6) DataField属性:设置或返回数据使用者将被绑定到的字段名。7) DataFormat 属性:设置或返回DataFormat对象,用于数据绑定。8) Datasource属性:设置或返回控件绑定的一个数据源。9) DisabledPicture属性:设置或返回一个对图片的引用,该图片在控件无效时显示在控件中。10) DownPicture 属性:设置或返回一个对图片的引用,该图片在控件被单击处于压下状态时显示。11) DragIcon属性:设置或返回图标,它将在拖放操作中做为指针显示。12) DragMode属性:设置返回一个值,确定在拖放操作中所用方式。13) Font属性:设置或返回字体的属性。14) Name属性:设置或返回控件的标识名。15) Value属性:设置或返回控件的状态。u 复选按钮类的控件的基本事件:1) Click事件:鼠标单击控件时发生。2) DragDrop事件:在一个完整的拖放动作完成或使用Drag方法,并将其Action参数设置为2时发生。3) DragOver事件:在拖放操作正在进行时发生。4) GotFocus事件:在对象获的焦点时发生。,5) OLECompleteDrag事件:当源部件被放到目标时发生,并通知源部件拖放操作被执行或取消。6) OLEDragDrag事件:当源部件决定放操作能发生,却源部件被放到目标部件时,此事件发生。u 框架类的控件:1) List属性:列表框控件的表项是使用数组的方式保存,数组的每一个元素存储列表控件的一个表项1) Listcount属性:控件列表部分项目的个数。2) Mutselect属性:可以设置列表框为单选或允许多选属性.3) Selectd属性:标示一个数组,数组各元素为:4) Selected(0),selected(1)u 滚动条类的控件:1) Value属性:滚动条上滑块所在位置由value值所决定。2) Max和min属性:对value值的最大,最小进行限制。3) Largechange属性:用户点击滚动条与键头之间的区域时,value的改变量。4) OnClick事件:用来添加按钮的单击事件所执行的程序代码。u 定时器类类的控件:1) Interval属性:表示定时的时间间隔,以毫秒为单位。2) Enable属性:为true时(缺省值),激活定时器开始计时;为false时处于休眠状态.数据库连接方式选择Visual basic6.0连接数据库的主要方式以下几种方式:一是:用data控件进行数据库链接 ,二是利用adodc(ADO Data Control)进行数据库链接 。三是: 利用DataEnvironment进行数据库链接.四是利用ADO(ActiveX Data Objects)进行编程:现在我们来大致对这几种技术应用介绍:一、 用data控件进行数据库链接.第一步:给窗体添加一个Data控件。第二步:用Access建立一个名为Pad的数据库,在库中建立一个表Myset,给表添加四个字段:backcolor(数据),forecolor(文本),fontname(文本),fontsize(文本)。注意:请将库文件存入程序所在目录。 如果你的机器没安装有Access,可通过VB建库。二、 利用adodc(ADO Data Control)进行数据库链接:使用adodata控件访问数据库可以完全不用编写代码,只需要通过简单的设置和操作其属性就可以实现与数据库的连接,通过绑定数据感知控件,就能提供一个访问数据库的界面,用来实现对数据库的浏览,贴加,删除,修改等操作.三、 利用DAO对数据库进行操纵:在visual basic 中提供了两种与jet数据引擎接口的方法:data控件与数据访问对象(DAO)DAO是database object的英文缩写,要访问数据库一方面数据库要提供访问接口,另一方面要在编程环境中有对数据库的支持.DAO模型是设计关系数据库系统结构的对象类的集合.他们提供了管理关系型数据库系统所需要的全部操作属性和方法,这其中包括建立数据库,定义表,字段和建立表间关系,定位和查询数据库等.关系数据库介绍:关系数据库是目前各类数据库中最重要、最流行的数据库,他应用数学方法来处理数据库数据,是目前使用最广泛的数据库系统。20世纪70年代以后开发的数据库管理系统产品几乎都是基于关系的。在数据库发展的历史上,最重要的成就就是关系模型。 关系数据库系统与非关系数据库系统的区别是:关系系统只有“表“这一种数据结构;而非关系数据库系统还有其他数据结构,对这些数据结构有其他的操作。结构化查询语言SQL(Structured Query Language)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言MicrosoftAccess介绍:使用MicrosoftAccess,可以在单一的数据库文件中管理所有的信息。在这个文件中,用户可以将自己的数据分别保存在各自独立的存储空间中,这些空间称作表;可以使用联机窗体来查看、添加及更新表中的数据;使用查询来查找并检索所要的数据;也可以使用报表以特定的版面布置来分析及打印数据。 如果要保存数据,请为每一种类型的信息创建一个表。如果要从查询、窗体或报表中的多个表中将数据合并在一起,就要定义各个表之间的关系。 如果要搜索并检索符合指定条件的数据,包括来自多个表中的数据,就要创建查询。查询的同时也可以更新或删除多条记录,并对数据执行内嵌或自定义的计算。 如果要简单地直接在某个表中查看、输入及更改数据,请创建一个窗体。在打开一个窗体时,MicrosoftAccess将从一个或多个表中检索数据,并使用用户在“窗体向导”选择的版面布局或所创建的版面布局,将窗体显示在屏幕上。 如果要分析数据或将数据以特定的方式打印出来,请创建一个报表。例如,可以打印一份将数据分组并计算数据总和的报表,也可以打印另一份带有各种数据格式的打印邮件标签的报表。第一章 系统的分析第一章 系统的分析21 系统开发的目标和思想本系统开发目标是服务于人们查询公交车路线信息,方便工作人员日常出行.同时力求做到界面人性化,功能齐全,数据存储安全.22 系统的可行性分析技术上:本系统采用visual basic 6.0与微软的access作为数据库,技术上开发难度一般.经济上:本系统服务于人们出行公交车查询,提高了工作人员办事效率,节省了开支.所以具有经济上的可行性.社会上:本系统同时也方便了广大社会.所以具有社会可行性.第二章 系统的设计31 系统的功能结构设计主界面按车次查询按起点终点查询32 系统的数据库设计1.bus信息表:32 界面设计与代码设计1关于界面设计:代码设计:Option ExplicitDim bt As BooleanPrivate Sub Check1_Click()If Check1.Value = 0 Then Form1.IsBeginS = TrueElse Form1.IsBeginS = FalseEnd IfEnd SubPrivate Sub Form_Load()bt = TrueEnd SubPrivate Sub Label1_Click()End SubPrivate Sub Timer1_Timer()bt = FalseIf Check1.Value = 0 Then Form1.IsBeginS = TrueElse Form1.IsBeginS = FalseEnd IfLoad Form1Form1.ShowTimer1.Enabled = FalseEnd SubPrivate Sub Timer2_Timer()Timer1.Enabled = TrueTimer2.Enabled = FalseEnd Sub2:主界面设计:代码设计:Dim bcbm As BooleanDim bcb1 As BooleanDim bcbs As BooleanDim bcbe As BooleanDim tm As IntegerDim intpart As IntegerPublic IsBeginS As BooleanPublic Sub showallstation() 以下代码是用来把在数据库的所有不同的车站显示在起始站中 其思路是如果在启动界面中,用户选择了更新数据库,则扫描整个数据库,并把不同的车站加到起始站中 并把这些车站名存放在一文本框中,以用于下次读取 如果用户没有选择更新数据库,则直接从文件中读取车站存放在起始站中 这样做的好处是可以大大提高效率,如果每次启动都要重新检索数据库,则要花费大量的时间If IsBeginS = False Then 用户选择了更新数据库Dim strm As StringDim mrc3 As ADODB.RecordsetSet mrc3 = New ADODB.Recordset Set mrc3 = Adodc1.Recordset mrc3.MoveFirst Do While Not mrc3.EOF For i = 1 To NC strm = Text2(i).Text If strm = Then Exit For End If For j = 0 To cbs.ListCount If cbs.List(j) = Trim(strm) Then Exit For End If Next If j cbs.ListCount Then cbs.AddItem Trim(strm) End If Next mrc3.MoveNext Loop If Mid(App.path, Len(App.path) - 1, 1) Then Open App.path + allstation.dat For Output As #1 Else Open App.path + allstation.dat For Output As #1 End If Print #1, CStr(cbs.ListCount) For k = 0 To cbs.ListCount - 1 Print #1, , cbs.List(k) Next Close #1Set mrc3 = NothingElse 用户没有选择了更新数据库 Dim strbs As String Dim intnb As Integer If Mid(App.path, Len(App.path) - 1, 1) Then Open App.path + allstation.dat For Input As #1 Else Open App.path + allstation.dat For Input As #1 End If Input #1, strbs intnb = CInt(Val(strbs) For k = 0 To intnb - 1 Input #1, strbs cbs.AddItem strbs Next Close #1 End IfEnd SubPublic Sub showtitle(numt As Integer)用于显示列表中的标题For j = 0 To 2 If numt = 2 And j = 1 Then Exit Sub End If MSF1(j).Clear Dim i As Integer With MSF1(j) .Rows = 2 .Cols = NC + 3 .TextMatrix(0, 1) = 车次 For k = 1 To NC + 1 .TextMatrix(0, k + 1) = 站 & CStr(k) .ColWidth(k) = 1000 Next .TextMatrix(0, NC + 2) = 备注 .ColWidth(0) = 200 .ColWidth(NC + 1) = 1000 .FixedRows = 1 For i = 1 To NC .ColAlignment(i) = 0 Next i .FillStyle = flexFillSingle .Col = 0 .Row = 0 .RowSel = 1 .ColSel = .Cols - 1 .CellAlignment = 4 .Row = 1 End With NextEnd SubPublic Sub showdata(num As Integer)用于显示按车站名进行的查询showtitle (num)Dim j As IntegerDim i As IntegerDim mrc0 As ADODB.RecordsetSet mrc0 = New ADODB.Recordset Set mrc0 = ExecuteSQL(txtsql) If mrc0.EOF = False Then mrc0.MoveFirst With MSF1(num) .Rows = 2 .Row = 1 Do While Not mrc0.EOF .Rows = .Rows + 1 For i = 1 To mrc0.Fields.Count If mrc0.Fields(i - 1) Null Then .TextMatrix(.Row, i - 1) = mrc0.Fields(i - 1) End If Next i .Row = .Row + 1 mrc0.MoveNext Loop End With End If Set mrc0 = NothingEnd SubPublic Sub showSEdata(s As String, e As String, numb As Integer)用于显示按起始站和终点站进行的查询其思路是扫描整个数据库,如果在一条记录中有起点站和终点站则把该记录加到列表中该过程用到了递归主要是由于起始站和终点站可以互换digein = digein + 1 用于记录递归次数If digein = 3 Then 第三次递归的时候,退出 a = MsgBox(没有直达的车次!您是否需要转车?, vbInformation + vbOKCancel, 询问) If a = vbOK Then Label5.Visible = True Cbm.Visible = True MSF1(0).Visible = False End IfExit SubEnd Ifshowtitle (numb)Dim j As IntegerDim i As IntegerDim m As IntegerDim k As IntegerDim ball As BooleanDim mrc As ADODB.RecordsetSet mrc = New ADODB.Recordset Set mrc = Adodc1.Recordset mrc.MoveFirst With MSF1(numb) .Rows = 2 .Row = 1 Do While Not mrc.EOF ball = False For m = 1 To NC If Text2(m).Text = Trim(s) Then ball = True Exit For End If Next If ball = True Then For k = m To NC If Text2(k).Text = Trim(e) Then Exit For End If Next End If If ball = True And k NC + 1 Then .Rows = .Rows + 1 For i = 1 To mrc.Fields.Count If mrc.Fields(i - 1) Null Then .TextMatrix(.Row, i - 1) = mrc.Fields(i - 1) End If Next i .Row = .Row + 1 End If mrc.MoveNext Loop End With If numb = 0 Then MSF1(0).Visible = True MSF1(1).Visible = False MSF1(2).Visible = False Else If numb = 2 Then MSF1(0).Visible = False MSF1(1).Visible = True MSF1(2).Visible = True End IfEnd IfIf MSF1(0).Row = 1 And numb = 0 ThenCall showSEdata(e, s, numb) End IfIf MSF1(1).Row = 1 And numb = 1 ThenCall showSEdata(e, s, numb) End If If MSF1(2).Row = 1 And numb = 2 ThenCall showSEdata(e, s, numb) End If Set mrc = NothingEnd SubPrivate Sub Cbe_Change()bcbm = FalseCbm.Text = Cbm.ClearCbm.Visible = FalseLabel5.Visible = Falseshowtitle 0MSF1(0).Visible = TrueMSF1(1).Visible = FalseMSF1(2).Visible = FalseLabel7.Visible = FalseEnd SubPrivate Sub Cbe_DropDown()bcbm = FalseCbm.Text = Cbm.ClearLabel7.Visible = FalseCbm.Visible = FalseLabel5.Visible = Falseshowtitle 0MSF1(0).Visible = TrueMSF1(1).Visible = FalseMSF1(2).Visible = FalseEnd SubPrivate Sub Cbm_DropDown() 该过程的作用是当走起始站和终点站没有直达的车时,查找所有的可用来转车的车站名 其思路是先扫描整个数据库,把有起始站的车站名的记录存放在MSF1(1)中,把有终点站的车站名的记录存放在MSF1(2)中 再扫描整个MSF1(1),对于每一条记录中的每一个车站,再扫描MSF1(2)中的每一条记录,如果该记录中既包含该车站,又包含要查询的终点站,则该车站符合要求该算法有一大好处是极大的提高了查询的速度,因为,在扫描整个数据库时,没有内循环。这可是我想了好久才想出来的哟-Label7.Visible = FalseIf bcbm = False ThenLabel6.Caption = 正在搜索中.Form1.MousePointer = 11Cbm.MousePointer = 11Frame2.MousePointer = 11Frame1.MousePointer = 11Dim strs As StringDim strm As StringDim bfirst As BooleanDim bsec As BooleanDim mrc3 As ADODB.RecordsetSet mrc3 = New ADODB.Recordset Set mrc3 = Adodc1.Recordset Dim finishst() As String Dim finnum As Integer finnum = 0 mrc3.MoveFirst MSF1(1).Clear MSF1(2).ClearDo While Not mrc3.EOF For i = 1 To NC strs = Text2(i).Text Select Case strs Case Exit For Case cbs.Text With MSF1(1) .Rows = .Rows + 1 For z = 1 To mrc3.Fields.Count If mrc3.Fields(z - 1) Null Then .TextMatrix(.Row, z - 1) = mrc3.Fields(z - 1) End If Next .Row = .Row + 1 End With Case Cbe.Text With MSF1(2) .Rows = .Rows + 1 For j = 1 To mrc3.Fields.Count If mrc3.Fields(j - 1) Null Then .TextMatrix(.Row, j - 1) = mrc3.Fields(j - 1) End If Next .Row = .Row + 1 End With End Select Next mrc3.MoveNext Loop For k = 0 To MSF1(1).Rows - 1 For t = 0 To mrc3.Fields.Count - 1 strs = MSF1(1).TextMatrix(k, t) If strs = Then Exit For End If If finnum = 0 Then ReDim finishst(finnum) finishst(0) = strs Else For c = 0 To finnum If strs = finishst(c) Then Exit For End If Next If c finnum Then ReDim Preserve finishst(finnum) finishst(finnum) = strs finnum = finnum + 1 Else Exit For End If End If For m = 0 To MSF1(2).Rows - 1 bfirst = False bsec = False For n = 0 To mrc3.Fields.Count - 1 strm = MSF1(2).TextMatrix(m, n) If strm = Then Exit For End If If strm = strs Then bfirst = True End If If strm = Cbe.Text Then bsec = True End If If bfirst And bsec Then Exit For End If Next If bfirst And bsec Then For w = 0 To Cbm.ListCount If Cbm.List(w) = Trim(strs) Then Exit For End If Next If w Cbm.ListCount Then Cbm.AddItem Trim(strs) End If Exit For End If Next Next NextSet mrc3 = NothingMSF1(1).Clear MSF1(2).ClearForm1.MousePointer = 0Cbm.MousePointer = 0Frame2.MousePointer = 0Frame1.MousePointer = 0Label6.Caption = bcbm = TrueEnd IfEnd SubPrivate Sub cbs_Change()bcbm = FalseCbm.Text = Cbm.ClearLabel7.Visible = FalseCbm.Visible = FalseLabel5.Visible = Falseshowtitle 0MSF1(0).Visible = TrueMSF1(1).Visible = FalseMSF1(2).Visible = FalseEnd SubPrivate Sub cbs_DropDown()bcbm = FalseCbm.Text = Cbm.ClearLabel7.Visible = FalseCbm.Visible = FalseLabel5.Visible = Falseshowtitle 0MSF1(0).Visible = TrueMSF1(1).Visible = FalseMSF1(2).Visible = FalseEnd SubPrivate Sub cbs_GotFocus()Call cbs_DropDownEnd SubPrivate Sub Combo1_Change()Label7.Visible = FalseCbm.Visible = FalseLabel5.Visible = FalseMSF1(0).Visible = TrueMSF1(1).Visible = FalseMSF1(2).Visible = FalseEnd SubPrivate Sub Combo1_DropDown()Label7.Visible = FalseCbm.Visible = FalseLabel5.Visible = FalseMSF1(0).Visible = TrueMSF1(1).Visible = FalseMSF1(2).Visible = FalseIf bcb1 = False ThenDim mrc1 As ADODB.RecordsetSet mrc1 = New ADODB.Recordset Set mrc1 = Adodc1.Recordsettxtsql = select number from bus Set mrc1 = ExecuteSQL(txtsql)mrc1.MoveFirstDo While Not mrc1.EOF Combo1.AddItem mrc1.Fields(0) mrc1.MoveNext Loop Combo1.ListIndex = 0Set mrc1 = NothingEnd Ifbcb1 = TrueEnd SubPrivate 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.Li
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。