基于QT的校园导航系统的设计与实现.docx
《基于QT的校园导航系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于QT的校园导航系统的设计与实现.docx(54页珍藏版)》请在三一办公上搜索。
1、基于QT的校园导航系统的设计与实现摘要本文主要是介绍利用Linux系统和QT制作校园导航系统的设计方法。使用的操作系统是LinUX系统,但是在MndOWS系统下也是可以使用的,所使用的语言是c+,开发工具是QT。设计的主要目的是能够简单地观看整个校园的风景,使不熟悉校园的人能够知道每个景点的位置、介绍,查看学校的建筑物,包括建筑物的图片以及建筑物的描述。尤其,这个系统可以找出两个建筑物之间最短的距离,从而迅速地帮助不熟悉校园的人了解整个校园环境,然后找到最好的方法去参观整个校园,除此之外,该系统还可以查询两个景点之间的所有路径,有助于来往者跟好的选择路径。导航系统是在Linux系统(LinUX
2、下开发,windows下也可以运行)下,先利用QT制作出用户界面,再利用C+编程语言设计出基本功能并与界面相结合。本文设计的导航系统能够实现以下三大功能:第一,它可以测量两个建筑物之间的距离,同时在查询两个景点之间的路径信息的同时,提供起始点与终点建筑物的图片信息,便于更好的确认;第二,它可以帮助来访者从众多的路线中选出最短的一条,同时会提供两点之间的所有路径;第三,它可以在标志性建筑添加一些描述信息和图片,还可以查看从该建筑物到所有其他建筑物的路径信息。关键词路径规划;最短路径算法;校园导航;qtTheschoolnavigatesystembasedonLinuxandQtCreatorA
3、bstractMainlyintroducedinthispaperusingtheLinuxsystemandQTcampusnavigationsystemdesignmethod.UseoftheoperatingsystemisLinuxsystem,butalsocanuseunderWindowssystem,thelanguageisusedbyc+,developmenttoolsisQT.Themainpurposeofdesignistobeabletosimplywatchthesceneryofthewholecampus,whoisfamiliarwiththecam
4、puscanknowthelocationofeachscenicspot,introduction,seetheschoolbuildings,includingthestructureofthepicturesandthedescriptionofthebuilding.Especially,thesystemcanfindouttheshortestdistancebetweentwobuildings,soastohelppeoplewhoarenotfamiliarwiththecampusrapidlyunderstandthecampusenvironment,andfindth
5、ebestwaytovisitthewholecampus,inaddition,thesystemcanalsoqueryallpathsbetweentwospots,helpgoingbackandforthwithgoodchoicepath.NavigationsystemisintheLinuxsystem(underLinuxdevelopment,alsocanrununderWindows),thefirstuserproducedusingQT,usingc+programminglanguagebasicdesign.Functionandcombiningwiththe
6、interface.Thenavigationsystemisdesignedinthispapercanachievethefollowingthreefunctions:first,itcanmeasurethedistancebetweenthetwobuildings,atthesametimethequerypathinformationbetweentwositesatthesametime,providethepictureofthestartingpointandendpointbuildinginformation,tofacilitatebetterconfirmation
7、;Second,itcanhelpvisitorsfrommanychoosetheshortestroute,atthesametimewillprovideallthepathbetweentwopoints;Third,itcanaddsomedescriptioninlandmarkinformationandpictures,youcanalsoviewfromthebuildingtoalltheotherpathinformationofthebuilding.Keywordspathplanning;antalgorithm;thecampusnavigation;qt目录摘要
8、iAbstractii1 绪论11.1 概述11.2 研究背景11.3 研究目标11.4 本章小结12 QT简介22.1 QT的背景介绍22.2 QT实现的结构原理22.3 QTQWidget简介32.3.1 详细描述32.3.2 QWidget事件简介42.4 QT应用程序的实现62.5 本章小结73 需求分析83.1 需求分析概述83.2 需求分析的特点83.3 需求分析需要完成的任务83.4 实际需求分析93.4.1 用户需求分析93.4.2 功能需求分析93.4.3 实际需求分析93.4.4 系统性能需求分析93.5 本章小结104总体设计114.1 总体设计概述114.2 系统总体设
9、计描述114.3 系统总体设计模块划分114.3.1 主要模块划分图124.3.2 显示系统主界面模块设计124.3.3 查询导航有关人员模块设计134.3.4 导航主界面的模块的设计134.4 本章总结145详细设计155.1 详细设计概述155.2 校园导航系统主程序流程图155.3 单源最短路径算法介绍165.3.1 DijkStra(迪杰斯特拉)算法165.3.2 floyed(弗洛耶德)算法175.4 图中节点与路径的存储195.4.1 节点的存储195.4.2 节点间路径长度的存储195.4.3 整个图的存储205.5 本章总结206系统实现及运行结果216.1 界面设计216.1
10、.1 主窗体设计216.1.2 子页面布局设计246.1.3 更换起始点的实现276.1.4 点击主页面中的查询路径具体实现296.1.5 点击查看景点信息描述的实现296.2 图的创建316.3 路径查询的具体实现316.3.1 单源最短路径算法具体实现326.3.2 所有可达路径的查询的具体实现336.3.3 每一个点到它可达的所有点的查询的具体实现336.4 选择系统是否退出的具体实现346.5 本章小结357测试367.1 测试目标367.2 测试预期结果367.3 测试用例的设计367.4 本章小结38结论39参考文献40致谢41外文原文42中文翻译471.1 概述现在科技越来越发达
11、,手机上的软件,电脑上的软件越来越多,所以开发小的程序也越来越有必要。QT具备跨平台,易扩展,界面华丽,性能稳定等优点。因此,以嵌入式处理器作为硬件平台,以QT作为程序框架,两者的完美结合必将成为未来技术的发展方向。1.2 研究背景现在,汽车正在普及,道路不断建设,城际间的经济往来更加频繁,活动的区域也越来越大。为了提高生活质量,大量的休闲活动、探险活动的举行使我们并不局限在自己认识的一小块区域中,不认识道路,找不到目的地的情况也屡有发生。就此,各种各样的导航仪逐渐走进我们的生活。无论什么导航仪最主要的部分都是电子地图。开发电子地图成为了导航仪的关键。根据调查,电子地图制作困难而且价格相当昂贵
12、,给导航仪的开发带来了很多不便。自主绘制电子地图,编写电子地图应用程序,不管是从经济上还是研究上都具有非常大的意义。现在,各个学校都有了自己的导航系统,但是开发工具语言,还有平台不一样。所以,如果拥有一个跨平台的程序的话,那将会给我们的开发节省了大量的时间。QT正是一个支持多平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。所以使用QT作为应用程序框架是一个不错的选择。1.3 研究目标本课题名为校园地理信息系统。本系统以太原理工大学为模型,旨在建立一个本学校的导航系统,可以根据不同人的要求,
13、足不出户,就可以浏览校园,得到各种信息基于上述背景,开发一个校园导航项目,使用IinUX搭配qt来构建这个项目。利用QT4作为系统应用层的程序框架。开发一个可以运行的小客户端。这个客户端虽然是在IinUX下开发的,但是它是可移植的,在WindoWS下也可以运行。1.4 本章小结本章主要介绍本项目的选题背景、意义,选题目标。通过介绍,了解当今社会主要是校园,导航系统的需求以及重要性,明白研究该系统的必要性。2QT简介2.1 QT的背景介绍Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以开发GUl程序,也可用于开发非GUl程序,比如控制台工具和服务器。Qt是面向
14、对象的框架,使用特殊的代码生成扩展(称为元对象编译器(MetaobjeetCOmPiIer,moc)以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境QlCreatOr3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、BeaUtifier等插件,废弃了无Python接口的GDB调试支持,集成了基于CIang的C/C+代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WPoQtCreatOr包含了一套用于创建和测试基
15、于Qt应用程序的高效工具,包括:一个高级的C+代码编辑器上下文感知帮助系统可视化调试器源代码管理项目和构建管理工具.优良的跨平台特性:Qt支持下列操作系统:MiCrOSOftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,DigitalUNIX(OSF1,Tru64),Irix,FreeBSD,BSDOS,SCO,AIX,0S390,QNX等等。面向对象:Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots的安全类型来替代callback,这使得
16、各个元件之间的协同工作变得十分简单。2.2 QT实现的结构原理QtZEmbedded是Trolltech公司开发的面向嵌入式系统的Qt版本,与Xll版本的Qt在最大程度上接口兼容,采用帧缓存(framebuffer)作为底层图形接口。QUEmbedded类库完全采用C+封装,并且有着丰富的控件资源以及较好的可移植性,大范围的Qt/EmbeddedAPI可用于多种开发项目。QtZEmbedded的实现结构如图2-1所示:图2-1QT的实现结构图Qt/Embedded的底层图形引擎基于framebuffer。FramebUffer驱动程序的实现分为两个方面:一方面是对LCD及其相关部分的初始化,包
17、括画在缓冲区的创建2和对DMA通道的设置;另外一方面是对画面缓冲区的读写,具体到代码为read、Write、ISeek等系统调用接口。至于将画面缓冲区的内容输出到LCD显示屏上,则由硬件自动完成。对于软件来说是透明的。当对于DMA通道和画面缓冲区设置完成后,DMA开始正常工作,并将缓冲区中的内容不断发送到LCD上。这个过程是基于DMA对于LCD的不断刷新的。基于该特性,framebuffer驱动程序必须将画面缓冲区的存储空间(物理空间)重新映射到一个不加高缓存和写缓存的虚拟地址区间中,这样能才保证应用程序通过mmap将该缓存映射到用户空间后,对于该画面缓存的写操作能够实时的体现在LCD上。QT
18、程序是基于C+编写的,图形用户界面编程同时需要运行效率和高水平的灵活性。Qt通过结合C+的速度为这一领域提供了Qt对象模型。Qt把下面这些特性添加到了C+当中:一种被称为信号和槽的非常强大的机制;可查询和可设计的属性项;强大的事件和事件过滤器;根据上下文进行国际化的字符串翻译;完善的时间间隔驱动的计时器等。许多Qt的特性是基于QObject的继承,通过标准C+技术实现的。QApplication是必须构造的Qt主对象,需要在一开始的时候就构造这个对象,并把命令行参数传递给这个对象,每个Qt应用程序有且仅有一个QApplication对象,该对象必须在做其他事之前创建,这个对象处理一些底层操作,
19、如事件处理、字符串本地化和控制界面外观等。信号和信号处理函数是GUI应用程序用来响应用户输入的基本机制,也是所有GUl库的核心特征,Qt的信号处理机制由信号(SignaI)和槽(SIot)构成,它们相当于GTK+中的信号和回调函数。在Qt中回调函数就叫做槽。信号和槽用于对象间的通讯,它的基本语法为:connect(objectl,signall,object2,slotl);2.3 QTQWidget简介2.3.1 详细描述QWidget类是所有用户界面对象的基类。通俗的来讲,基本上所有的UI类都是由QWidgetQt继承出来的,而QWidget继承于QObject,大家可以查阅Qtsourc
20、e即可发现一些微妙的写法,如这篇文章有详细介绍:Qt库对象数据的声明和使用窗口层次窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。QDialOg是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialOg的子类是最普通的顶级窗口。一个没有父窗口部
21、件的窗口部件一直是顶级窗口部件。非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的o(当然把一个按钮作为或者叫做顶级窗口部件也是可能的,但绝大多数人喜欢把他们的按钮放到其它按钮当中,比如QDialog0)QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPUShBUtton、QListBox和QTabDialog等等。每一个窗口部件构造函数接受一个或两个标
22、准参数:1.QWidget*parent=0是新窗口部件的父窗口部件。如果为0(默认),新的窗口部件将是一个顶级窗口部件。如果不是,它将会使parent的一个孩子,并且被parent的几何形状所强迫(除非你指定WTypeToPLeVel作为窗口部件标记)。2.3.2 QWidget事件简介基本事件:*PaintEventO-只要窗口部件需要被重绘就被调用。每个要显示输出的窗口部件必须实现它并且不在PaintEVent()之外在屏幕上绘制是明智的。*resizeEvent()-当窗口部件被重新定义大小时被调用。*mousePressEvent()-当鼠标键被按下时被调用。有六个鼠标相关事件,但是
23、鼠标按下和鼠标释放事件是到目前为止最重要的。当鼠标在窗口部件内或者当它使用grabMousc()来捕获鼠标时,它接收鼠标按下事件。* mouseReleaseEvent()-当鼠标键被释放时被调用。当窗口部件已经接收相应的鼠标按下事件时,它接收鼠标释放事件。这也就是说如果用户在你的窗口部件内按下鼠标,然后拖着鼠标到其它某个地方,然后释放,你的窗口部件接收这个释放事件。这里有一个例外:如果出现在弹出菜单中,当鼠标键被按下时,这个弹出菜单立即会偷掉这个鼠标事件。* mouseDoubIeClickEvent()-和它看起来也许不太一样。如果用户双击,窗口部件接收一个鼠标按下事件(如果他们没有拿牢鼠
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 校园 导航系统 设计 实现

链接地址:https://www.31ppt.com/p-1614204.html