基于VC++的公交查询系统_第1页
基于VC++的公交查询系统_第2页
基于VC++的公交查询系统_第3页
基于VC++的公交查询系统_第4页
基于VC++的公交查询系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、本科生毕业论文(设计)题目基于VC+的公交查询系统姓名 XX学号 院系电气信息及自动化学院专业电气工程及其自动化指导教师陈梅职称 讲师2012 年 5月日曲阜师范大学教务处制目 录摘要1关键词1Abstract1Key words11 绪论21.1 课题编写背景21.2 国内外研究状况21.3研究意义22系统开发技术22.1 系统开发技术简介22.2数据库技术32.3 系统运行环境43 需求分析 43.1 功能需求分析43.2 性能需求43.3 数据需求43.4软件结构53.5功能流程54系统设计64.1系统功能模块设计64.2数据交换的实现64.3模块流程图75系统实现85.1 模块界面85

2、.2 数据表95.3车次查询实现代码及运行结果105.4站点查询实现代码及运行结果126结论136.1系统需要改进的地方136.2设计感想13致谢14参考文献15基于VC+的公交查询系统电气工程及其自动化专业学生XX指导教师陈梅摘要:我国城市公交线路查询系统的发展落后于现在国家的经济发展。广大乘客可以获得的信息的方式较少,给出行带来了不便。为了解决这个问题,本人设计了这个城市公交查询系统。考虑了公交运行的实际情况和不同公交乘客的实际要求,分析了此系统应该具有的功能;又对系统的主要功能进行了详细的描述,这其中主要包括两大模块:站点查询模块和车次查询模块。最后结合系统开发阶段和调试阶段发现的问题提

3、出了需要完善的地方。关键词:查询车次站点Based on the VC+Public traffic Query System Student majoring in Electrical engineering and automationXXTutor ChenmeiAbstract:The development of the bus transportation enquiry system fall behind the growth of our countries economy. The large part of p

4、assengers can acquire few ways of information .So its necessary to us to develop a kind of citys system of bus road to resolve this problem. For this purpose,I design this application system. From this design,I analyzed the present condition of the bus passenger information and different peoples nee

5、ds, in order to knower what functions this equipment should contain. And then I describe the systems main function modules in detail, these functions can be divided into two modules, station enquiry , number of bus enquiry. At last, according to the problems that happened in the period of using, I s

6、ummed up some ways to improve the system .Key words: enquiry; number of bus; station引言现阶段社会发展很迅速,城市道路很多,很多时候会有道路拥堵和该道路的问题。因此,最大限度的提高道路使用效率就显得尤为重要,这对广大乘客来说不仅可以提高出行的效率还可以节省很多时间。现阶段在我国乘客主要的交通方式还是以公交车为主,所以每个城市的公交系统都很庞大。公交查询系统是这几年出现的一种新事物,因每个城市的发展水平不一样。获得,所以乘客获得信息的方式也不同。而国内现在比较缺乏专门的交通信息发布的管理机构,无法保证信息的可靠性

7、。随着交通需求的增长,从事交通服务信息的公司越来越多,借助现代的信息技术和管理方法,建立公交查询系统是社会发展的趋势。现在比较成熟的公交查询系统一般具备的功能是:采用车站站点查询车次查询、站至站查询等,不仅能够查询到各公交线路的起停站点,还可以给出相关的路线。纵观现在的形式,公交查询系统有着良好的发展前景,未来的公交查询呢系统将是基于B/S架构,通过浏览器查询,通过计算机网络全面联网,实现中心控制、自动更新、更多的查询方式和GIS系统的互联互通等等更多更强大的功能。1 绪论1.1课题编写背景在中国,随着经济的快速发展,城市交通拥堵,交通事故频繁和环境污染的现象 日益严重,阻碍了城市居民生活水平

8、的提高和经济的可持续发展。根据国内外城市交 通发展的经验教训,交通界专家学者达成共识优先发展公共交通是解决城市交通 拥堵的根本途径之一。城市公共交通运输以其覆盖面广、经济、快捷的特点,目前仍然是绝大多数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。正因为其覆盖面广、经济、快捷的特点,城市公交线路、站点变动的灵活性就很大。下水道的堵塞,路面的修补,道路高峰期的拥堵,等等,这些都直接或间接地影响着公交车的行车路线,这不仅给本市市民带来了不便,也为外来旅游、工作的人带来极 大的不便。1.2国内外研究状况现阶段在国内,乘客可以获得的信息较少,基本上没有可靠地即时信息,如果能够提供一种服务,

9、为市民特别是外来旅游、出差、就医等急需了解 本地道路情况的人提供方便、快捷、经济、高效地利用公交线路的方案,将方便他们的出行和生活,同时减少不必要的交通流量,提高交通运输的效率和城市的地位。目前在中国这已是一个越来越迫切的现实问题。为了解决这一系列的问题,国外在城市 公交网络系统上投人了极大的财力 构建了利用计算机网络和先进的通信系统的智能 运输系统ITS(Intelligence Transport System)。从而实现了大范围内全方位发挥的 实时、准确、高效的运输综合管理,使人、车、路密切配合,和谐统一,大大改善了 交通环境等。国内在这方面的起步较晚,但是各地政府都给予了极大的重视。相

10、继建 立了网上公交查询系统,但是效果不甚理想。因此对公交系统查询研究已是一个非常重要的问题。基于以上几点,本文从本市用户实际需求出发,研究了本市公交系统的设计问题。我首先登陆了网络上的日照市公交查询系统。 在该网站上,详细查看了日照市的公交车辆信息,因日照市还是一个新生的海边城市人口不是特别多,道路不是特别拥挤,所以人们出行大多选择私家车辆。因此将来私家车会越来越多,最终将导致日照市和其他城市一样变得很拥挤,到时候城市公共交通仍是绝大多数出行者的首选方式,也是城市政府大力发展的一种交通方式。 1.3 研究意义我国私人汽车的迅速发展给城市的交通系统带来严重的影响,如何考虑私家车和公共汽车的竞争关

11、系并建立一个有竞争力的,优化了的公交系统是具有战略意义的。我国实行了可持续发展战略,当然也包括交通的可持续发展。所以致力于优化交通系统结构和发展公共交通信息化体系是当务之急。2 系统开发技术2.1 系统开发技术简介2.1.1VisualC+简介VisualC+是微软开发的一个集成环境,是使用C+的一个平台。它是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(I

12、ntegrated Development Environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。2.1.2 MFC基础类类MFC,微软基础类(Microsoft Foundation Classes),同VCL类似,是一种Application Framework,随微软Visual C+ 开发工具发布。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少

13、部分类例外。MFC 应用程序的总体结构通常由 由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。Windows 应用程序中,MFC 的主包含文件为"Afxwin.h"。MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,VC+是WinDOS下开发人员使用的专业C+ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发

14、包,是对WindowsAPI的封装,大约有100多个类,但常用的有二三十种。现在介绍一下MFC中比较重要也较常用的类。CWnd:窗口类,它是大多数“看得见的东西”的父类,比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton等。 CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写) Cview:视图类,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用

15、CWnd:Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。 CDC:设备文本类。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC类来完成。 Cdialog:对话框类。它是所有对话框的类。CwinApp:应用程序类。似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。CGdiObject及子类,用于向设备文本画图。它们都需要在使用前选进DC。 Cbrush:刷子,填充 Cfont:字体,控制文字输出的字体 。Cfile:文件。最重要的不外是Open(打开),Read(读入),Write(写) C

16、string:字符串。封装了C中的字符数组,非常实用。2.2 数据库技术数据库技术作为管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现在已形成相当成规模的理论体系和实用技术,优秀的数据库设计是应用成功的基石,是开发应用的前提。数据库的体系结构分为三级:内部级,概念级和外部级。这个三级结构有时也称为“三级模式结构”外部级:最接近用户,是单个用户所有能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。概念级:涉及到所有用户的数据定义,是全局的数据视图。全局视图的描述称为“概念模式”。内部级:最接近于物理存储设备,涉及到实际数据存储的结构物理存储数据视图的描述称为“内模式”。

17、数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象的处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。本系统采用的数据库管理系统是微软公司的Acess2000,Access数据库不但具有dBASE、FoxBASE、FoxPro等数据库的优点,而且还具有其自身特点,它是对传统数据库的发展,提供了真正的关系数据库管理。Access是一个功能强大、方便灵活、适用于个人单机环境下使用的关系型数据库管理系统,它同时提供了一个完整的数据库应用开发工具,可用于开发适合于特定的数据库管理的Windows应用程序。<1>Acces

18、s的对象Access 2000支持的对象包括表、查询、报表、窗体、宏、模块及网页。Access所提供的这些对象都存放在同一个数据库文件(.mdb文件)中,而不像其他数据库那样分别存放于不同的文件中。这样就方便了数据库文件的管理。在Access 2000的各个对象中,表是数据库的核心基础,它存放着数据库中的全部数据信息。报表、查询和窗体都是从数据表中获得数据信息,以实现用户的某一特定需要,例如查找、计算统计、打印、编辑修改等。窗体可以为用户提供良好的操作界面,通过窗体,用户可以直接或间接地调用宏或模块,并执行查询、打印、预览、计算多呢个功能,甚至对数据表进行编辑修改等。<2>Acce

19、ss的主要功能(1)定义数据创建表,利用表储存相应的信息。(2)根据需要定义各表之间的关系,从而将各个表中的相关的数据有机的结合在一起。(3)方式多样的数据处理能力。可以创建查询来检索数据;可以创建联机窗体来直接查看、输入及更改表中的数据;可以创建报表来分析数据或将数据以特定的方式打印出来。(4)创建Web页,建立对Internet和Intranet的支持(5)开发应用程序。可以利用宏或Visual Basic将各种数据库对象连接在一起,形成一个数据库应用系统,而且用户也不需要编写复杂的代码。2.3 系统运行环境<1>.操作系统要求:windows xp/windows 2000&

20、lt;2>.需要的软件:Microsoft Office Access 2000,Visual Studio c+6.0<3>.计算机硬件要求:800MHZ奔腾 获其他处理器,256以上的内存3 需求分析3.1 功能需求分析用来查询线路和车次,为不熟悉交通线路的乘客提供相应的信息,通过站点输入还可以查询到该车辆通过的其他站点,便于乘客的换乘。此系统一共包含三大功能块,分别是数据库系统模块,车次查询模块,站点查询模块。这几个模块可实现的主要功能如下:(1)实现对公交车辆的管理,根据实际情况对线路及车辆进行更改删除等操作。(2)实现对已知公交线路的具体信息的查询功能,也包括所有站

21、点。(3)已知站点,点击查询得到所有经过该站点的车辆线路信息。3.2 性能需求(1)可操作性:使该系统适合个层次乘客的用户,查询功能方便快捷。(2)实用性:系统为用户实现了查询操作。3.3 数据需求(1)公交车次数据的输入,大部分是日照市大学城附近的车次。(2)站点数据的录入。3.4 软件结构本系统的软件结构比较简单,主要有两大部分组成:车次查询和站点换乘。如图3-1所示:公交查询系统设计与实现车次查询站点查询图3-1 软件结构3.5 功能流程这个系统的功能流程是:用户进入主界面后进行功能选择。然后进行数据输或或选择车次或者输入站点然后进行查询,系统会进行判定用户输入的信息是否正确,如果正确可

22、以进行下一步具体的查询功能,否则的话会提示用户输入正确信息。如图3-2所示:图3-2 功能流程4 系统设计4.1系统功能模块设计本系统的功能模块划分为公交线里车次具体信息查询功能模块,站点具体查询功能模块。(1) 查询具体公交线路信息模块该模块可以对用户输入的车辆尽行信息检索,用户也可以在系统的下拉列表中选择自己要查询的车辆,该公交线路的具体信息包括线路上所有的停靠站点,功能模块图如图所示:图 4-1 具体线路详细查询功能模块图(2)站点具体信息查询模块 该模块可以根据用户输入的站点名称进行信息查询,包括所有经过该站点的公交线路。功能模块图如图所示:图 4-2 站点查询功能模块图4.2数据交换

23、的实现系统的资源是存放在数据库服务端的。当客户需要某些资源时,在把这些资源由服务器发送给客户端,通过输入,点击按钮可获得某一类型的数据,以该类型的数据作为查询条件遍历数据表,以获得目标结果。本系统只是简单的单机运行,但运行时也需要将需要的数据库连接到程序中,这样用户才能得到想要的结果。图4-3查询操作与数据交换4.3 模块流程图4.3.1 车次查询流程图车次查询的功能是根据用户输入的数据判断是否为空,如果为空那么提示用户输入错误,否则就调用车次查询函数,看是否到了记录的末端,如果是那么就结束。如果不是,那么就指向当前记录看是否等同于当前记录中的车次,如果等同那么返回给显示控件显示结果。如果不等

24、同那么就指向下一条记录。图4-4 车次查询流程图4.3.2站点查询流程图站点查询的功能是根据用户输入的数据判断是否为空,如果为空那么提示用户输入错误,否则就调用站点查询函数,看是否到了记录的末端,如果是那么就结束。如果不是,那么就指向当前记录看是否等同于当前记录中的站点,如果等同那么返回给显示控件显示结果。如果不等同那么就指向下一条记录。图 4-5 站点查询流程图5系统实现这个应用软件落实到具体的实现上时,首先要进行界面的设计,界面的功能布局是否合理、美观与否都关乎到这个软件质量。所以软件的界面也是很重要的一部分。然后要建立数据库,数据表是用户查询内容的来源,所以数据表的内容直接关系到用户可以

25、从这个软件中得到什么信息,这也是很重要的部分。这两部分都做完以后剩下的就是编程了,这是所有预想功能能否实现的关键所在,也是设计难点。下面具体介绍各部分是怎么实现的。5.1 模块界面设计开始首先要建立一个基于对话框的MFC工程类,这样系统会默认生成一个基本的对话框架。里面包含确定和取消两个按钮,我们根据自己的需要进行增删。这个查询系统的主要模块有两个,一个是车次查询模块,另一个是站点查询模块。这两个模块我做到了一起,这样比较方便用户操作。 车次查询模块车次查询模块包含一个静态控件static box ,一个组合框combo box还有一个按钮,显示区是公共的,也就是说不管是车次查询还是站点查询都

26、是从右边的显示区中显示。这样比较节省资源,也比较美观。具体界面如下图5-1所示。图5-1 车次查询界面 站点查询模块 站点查询界面和车次查询差不多,控件基本上都是一样的,只不过站点查询中用来接收用户输入信息的是一个编辑框,编辑框负责和数据库进行信息交换,显示区在右边,站点查询及整体效果如下图5-2所示。图 5-2整体查询界面5.2 数据表用Microsoft Access 2000做的公交车辆的数据库如下,其中包含了车辆的车次信息及所有站点信息。图5-3数据表信息5.3 车次查询实现代码及运行结果车次查询模块主要应用的知识点是对记录集的操作,ODBC记录集的基本操作包括显示、滚动、添加、修改等

27、,查询的方式有两种,一种是完全匹配查询,这种查询方式是对每一条记录都进行查询,当符合条件时就将其打开。另外一种模糊查询,在车次查询中用不到。下面具体实现车系查询的主要代码:void CBusDlg:OnNum() /车次查询按钮函数代码/ TODO: Add your control notificationhandler code hereCString str; /定义字符串类型的变量strint i=m_num.GetCurSel(); /返回组合框中列表框中当前选中的项的下标。如果/有选中项,则返回CB_ERRm_set.m_strFilter=" bus_station&q

28、uot;if(m_set.IsOpen() /这是调用数据库打开函数,如果文件是打开的那么就执/行以下的内容m_set.Close(); /将文件关闭,重新进行下面的操作m_set.Open(); /打开文件m_set.MoveFirst(); /移到数据表中的第一条记录for(int j=0;j<i;j+) /定义整型变量j,如果没有到达记录集的最后一条记/那么就顺序往下移动m_set.MoveNext();str.Format("%ld",m_set.m_bus_number);/将变量值转换成需要的类型放到str中SetDlgItemText(IDC_BUSNU

29、M1,str); /将str中的值显示到控件中str.Format("%s",m_set.m_bus_station);SetDlgItemText(IDC_STANUM1,str);m_set.Close();这部分是对车次查询模块中的查询按钮添加的功能,它主要是在用户输入或者选择所需车次后对数据库进行的检索,将符合用户要求的信息进行显示。运行测试后结果如图5-4 所示。图 5-4 车次查询结果这部分能够正常运行的前提是数据库可以连接正常,如果数据库连接不上那么系统将不可以调用功能函数进行信息检索。当用户输入信息不能和数据库中的记录相匹配时将会弹出对话框提示用户无法找到所

30、需信息,实现的代码如下:BOOL CBusDlg:OnInitDialog()CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu-

31、>AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE); /设置小图标if(!m_database.Open(NULL,FALSE,FALSE,"ODBC;DSN=bus")AfxMessageBox("打开数据库失败!");/数据库ODBC操作语言,如果不满足条件那么就弹出对话框:打开失败m_set.Open();CSt

32、ring str;m_set.MoveFirst();while(!m_set.IsEOF() str.Format("%ld",m_set.m_bus_number);m_num.AddString(str);m_set.MoveNext();m_set.Close();return TRUE; 5.4站点查询实现代码及运行结果站点查询主要用到是模糊查询,用户只给出停靠站而不是整条路线,我们需要对记录集进行模糊查询,在这里用到的关键语句是UpdateData(TRUE);m_set.m_strFilter=" bus_station like '%&qu

33、ot;+m_edit+"%' "然后利用下面的语句将符合条件的线路显示到用户界面上str.Format("%ld",m_set.m_bus_number); 实现的站点查询功能的代码具体如下:void CBusDlg:OnSta() UpdateData(TRUE);m_set.m_strFilter=" bus_station like '%"+m_edit+"%' "if(!m_set.Open()|m_set.IsEOF()AfxMessageBox("抱歉,没有找到您要查询

34、的信息!");CString str;int i=IDC_BUSNUM1,j=IDC_STANUM1;while(!m_set.IsEOF()str.Format("%ld",m_set.m_bus_number);SetDlgItemText(i,str);str.Format("%s",m_set.m_bus_station);SetDlgItemText(j,str);i+;j+;m_set.MoveNext();m_set.Close();这段程序中如果开头部分IF语句里面的条件不满足那么就会跳过if括号里面的内容往下执行,也就是说用户

35、输入的信息和数据库里面的相匹配,那么程序运行的结果如下图5-5所示。图5-5 站点查询结果当if里面的语句满足即当用户输入的数据不能和数据库中的任何一个记录集匹配时会弹出下面的对话框提示用户重新输入或者检查其信息是否有误,如图5-6所示。图5-6 没有查询到用户输入信息时结果6结论6.1 系统需要改进的地方因本人能力有限和时间关系,本系统设计时没有给出换乘的功能,这是该系统以后要着重改进的地方。然后显示区可以根据匹配信息的多少进行动态调整,减少静态设置的冗余情况。这样数据源的自动设定和动态链接问题可以赋予更大的自主性。系统还有很大的升级空间,以后时间精力允许我会进一步将其完善。6.2 设计感想

36、随着毕业的临近,我的大学生活就要结束了,即将踏入社会去开始另一种生活。写这个论文的这段时间感触颇多,我也学会了很多东西,感觉到自己在慢慢的成熟。 在选这个课题时,我就有一定要做好这个论文的想法。我对计算机编程语言比较感兴趣,所以对这个课题还是比较喜欢的。这也是我第二次做这样的设计,在大专的时候也是做的这样的课题,只不过那个是用的java语言,设计的是虚拟漫游的课题。选题的时候没料到会很艰难,那时候做的是相当的辛苦,不过还好最终交上了一份满意的答案。现在我对这篇论文也倾注了大量的心血,到图书馆查阅了大量的资料,同时我也上网搜索了一些资料或者问我的指导老师。慢慢的思路开始清晰到开始自己动手编写程序。做程序的这些天基本上都在学校的机

温馨提示

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

评论

0/150

提交评论