基于SOGOU电子地图和GPS定位的车辆管理系统

Coquettish

发布日期: 2018-12-01 16:33:34 浏览量: 908
评分:
star star star star star star star star star_border star_border
*转载请注明来自write-bug.com

摘 要

时至今日,信息化管理为我们节省了大量的人力物力,同时也加快了我们生活的节奏,提高了我们的工作效率,使得我们变得越来越“懒”,并且变得更加依赖于信息化的管理。由于社会的高速发展,信息变得越来越海量化,使用传统的管理方式已经变得很不现实,因为不仅要投入大量成本,并且也极为繁琐,如果能够使用信息化管理技术,将大大提高我们的工作效率并降低成本。计算机科学技术的快速发展,使这一想法成为可能,现在的生活中,信息管理技术的使用无处不在,它可应用于任何领域,并带来了不可估量的成效。

在本系统的实现中,使用到的技术有SOGOU地图API,SQL SERVER2000,ADO控件编程和VC6.0 的MFC编程,将这几种技术充分地结合起来,就可以开发出具备强大功能的软件系统。通过使用SQL来保存资料信息,再使用ADO控件提供的功能来对这些资料信息进行增删改查,同时将结果显示到用户界面上。并在用户界面上的地图上显示车辆的信息。

现在市场上也有不少免费或收费的车辆信息管理系统,当中有许多可取之处。本系统不仅结合了其它管理系统的优点,还添加了许多属于自己的其它系统没有的新特性。比如,系统将车辆管理与地图、GPS有效地结合起来,不仅能对车辆信息、用户信息进行管理,而且如果需要,还能对车辆进行实时监控、回放历史路径,或者给车辆设定区域,使得某车辆不能进(出)某些区域,这是其它管理系统所不具备的新特性。本系统的设计尽可能地使用扩展性、实用性、简洁性、友好性达到更好,使系统更稳定、高效地运行。本系统适用于车辆较多的公司或事业单位,特别是出租车公司、汽车公司、政府或物流公司,本系统的地图功能、GPS功能等,都能让他们对车辆进行更好更高效的实时管理。

关键词:车辆信息管理;地图;GPS;数据库;VC6.0;MFC;信息化管理

Abstract

Today, the management of information technology will save us a lot of manpower and resources, but also accelerated the pace of our lives, improve our work efficiency, so that we become more and more “lazy”, and become more dependent on information of management. Due to the rapid development of society, information is becoming more and more sea quantify using traditional management approach has become very realistic, because not only want to invest a lot of cost, and extremely complicated, if we can use information technology management, will greatly enhance our work efficiency and reduce costs. The rapid development of computer science and technology, this idea became possible in the present life, the use of information management technology is everywhere, it can be applied to any field, and brings immeasurable results.
In the implementation of this system, the use of technology to the SOGOU Maps API the SQL SERVER2000, ADO control programming and VC6.0 MFC programming, fully integrated into these several techniques you can develop a powerful software system . Save data by using SQL, then use the CRUD functions to these data and information provided by the ADO control, and display the results to the user interface. And vehicle information displayed on the map in the user interface.
Now on the market, there are many free or fee-vehicle information management system, which has many merits. This system not only combines the advantages of other management systems, and also adds new features not found by many other systems of their own. For example, the vehicle management and mapping, GPS effectively combine, not only to manage vehicle information, user information, and if needed, but also real-time monitoring, playback history path of the vehicle, or set the region to the vehicle, making the a vehicle can not import (export) certain areas, and other management systems do not have new features.The design of this system to extend the use of as much as possible, practical, simple, friendly and achieve better, making the system more stable and efficient operation. This system is suitable for vehicles more companies or institutions, especially the taxi companies, car companies, logistics companies, the map features of the system, the GPS function, can make them better and more efficient real-time vehicle management.

Keywords: VehicleInformation Management; maps; GPS; database; VC6.0; the MFC; informationmanagement

引 言

随着社会经济的发展,使用车辆的人越来越多,对于拥有各种类型的大量车辆的机关事业单位或汽车公司来说,车辆的管理日益成为日常事务中的一项重要的工作内容。如何让管理人员及时了解车辆状况,合理安排出车提高工作效率和提高车辆的使用效率,降低车辆使用费用和维修费用,就成为了各单位期待解决的一个课题。目前很多单位虽然使用上了信息化的车辆管理系统,但这些系统有的或许已经过时,有的或许并不能达到更好的效果,所以,提供一个更现代化的车辆管理系统是非常有必要的。

一个真正好的车辆信息管理系统不仅以能够对车辆的信息进行管理,满足正常的一些管理需求,还要能够提高工作人员的效率,让工作人员合理的安排出车,可以有效地提高车辆的使用效率,并可以通过裁剪来使系统更适合各公司的不同的需求。

在本系统中,除了提供车辆管理的一些基本需求外,还有基于地图和GPS的车辆管理,这些特性能让管理变得更实体化、人性化。为了使系统易于裁剪,适应各种不同需求,系统的设计就变得非常重要,本系统主要使用了模块化设计,各模块之间的耦合性尽可能地低,能够只要修改很少的代码,就轻松地将某些模块从系统中删除或添加到系统中,大大地提高的系统的可裁剪性和可扩展性,维护成本也可随着降到最低。

1 系统概述

1.1 系统开发背景

计算机技术的迅猛发展,越来越多的传统管理方式被信息化管理方式所取代,计算机管理系统软件也是乘机起势,各种管理系统像雨后春笋一样纷纷推出。但各种各样的管理系统虽然数量众多,但也不一定能满足更新速度很快的系统需求。所以,制作一个易于更新,易于进行功能需求改变的系统非常重要。

经过近十几年来经济的高速发展,汽车产业的发展势头也是势不可挡,而各公司的车辆也同样是增加了不少,目前,车辆信息管理系统已经逐步被物流部门所使用,功能也在不断的完善。

车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。该问题涉及到车辆的档案管理;驾驶员档案管理;车辆(维修费用、洗车费用、养路费、燃料费用等)管理;车辆使用管理和交通事故管理等。如何对一个企事业单位的车辆进行合理分配使用,使其发挥最大的使用价值,所以该系统对于一个用车单位来说,不但可以对车辆的使用进行合理的管理,而且对车辆的使用情况进行跟踪记录,这对于单位车辆责任到人,费用清晰,避免责任混乱、费用虚假等一系列相应问题的解决。

1.2 基于GPS和电子地图的车辆管理系统开发前景和意义

近年来随著卫星导航系统的蓬勃发展,其在日常生活中的应用日见广泛,车用导航系统对部份有车一族来说,已成为不可或缺的行车辅助工具,因此也有愈来愈多的汽车制造商将行车导航系统列为新车出厂时的配备。卫星测时测距导航/全球定位系统(GPS),在基本功能上可提供使用者精确的坐标定位及时间等信息,目前民用GPS的定位精度已可达到10米左右的范围,此种等级的精度己符合大多行车导航运行的需要,也使得GPS技术及商机得以迅速成长。

项目开发一套基于GPS和地图车辆管理信息系统,以求对车辆的行驶里程进行管控。根据GPS定位记录中的行车轨迹,可进行行车里程、行车速度、超速、堵塞、停留时间等信息的计算与管理。以GPS记录器记录的行车里程数据,由系统运算里程距离,进而开发行车里程计算、行车轨迹显示等功能,以掌握车辆的行驶动向及行车里程,并可针对特定车种及特定路段给予特定的监控。透过GPS所提供精确的导航讯息,由系统运算行车速度,进而开发超速及堵塞路段的轨迹、停车时间与费用计算等功能,提供管理者管控其行车速度及停车时间的信息。针对GJS电子地图位置显示和GPS定位轨迹记录方面加以研究,探讨将以何种设备、方式、技术,会使得行车轨迹能有效率及在可接受的误差范围内正确收取记录,接著研究系统可达到的功能并开发。

2 系统需求分析

虽然现在市场上已经有了不少的车辆管理系统,这些系统也有它们的一些可取之处,但这些系统往往都是只能够进行一些简单的车辆信息管理,即只能提供一些最基本的需求,或者甚至有的用户使用体验非常差,使用起来很繁琐,并不能更好的满足用户的需要。显然,这并不是用户所希望使用到的系统,用户希望使用的是一个简单易用的系统,除了能满足一些基本需求之外,还需要其它额外的有助于提高工作效率和工作体验的新特性,很明显现在市场还缺少这样的一个车辆管理系统。

首先,现在的车辆管理系统一般只能够进行基本的车辆资料管理,以及其它的一些维护管理、加油管理、驾驶员档案管理之类的基本功能。但随着社会经济的发展,汽车变得越来越多,对于车辆管理的要求也变得越来越高,普通的车辆管理系统已经不能满足用户的需求了,所以在该领域的研究还有很大的发展空间,开发出一个符合目前用户需求的车辆管理系统也是目前的市场所需要的。其次,现在市面上的车辆管理系统有些并没能让用户的管理变得更简单,还有很多能够改进的地方,如果能做到这些,会大大提高用户的工作效率,并可以让用户的管理不会那么枯燥。

本系统为了更好的满足用户的需求,一直致力于高效、简单、易用、体验等几个方面上的研究,系统除了提供基本的功能,比如权限管理、车辆管理之外,还引进了其它更多的一些新特性,比如将车辆跟地图和GPS结合起来,让管理变得更清晰、更实体化。这样,当用户使用本系统的时候,就可以轻松地掌握车辆的各种实时信息、地理位置,管理就变成了一件简单的事情。

为了将车辆跟GPS结合起来,本系统还引进了一个终端的概念,终端就是安装在车辆上的一个仪器,它能够实时获取车辆的地理位置并将位置信息发送到服务器上。车辆的实时信息如果需要可以在客户端的地图上实时显示出来,这样就能够给用户一个实时掌握车辆信息的功能,本系统尽力让用户对车辆管理有一个全新的体验,让用户意识到管理还可以这么简单(或者也会感觉到有趣)。

本系统是车辆管理系统中的客户端,用例图如图3.1所示:

具体的需求如下:

2.1 车辆管理

车辆管理是车辆管理系统最基本的需求之一,车辆管理包括车辆资料管理、派车/收车管理、终端管理等功能,用户可通过这些功能来完成车辆的日常管理和一些基础资料的管理,比如查询、新增、修改、删除和派车/收车等。车辆管理必须设计得尽可能的易用、简单而又不失实用性。为了满足日常管理的一些需求,目前在该功能需求中包括三个子功能:车辆资料管理、派车/收车管理、终端管理。

2.1.1 车辆资料管理

车辆资料管理主要提供的是对车辆基本资料的管理,包括车辆信息查询、查看、新增、修改、删除等一些基本功能。不过要想使用这些功能,必须管理员分配这些权限方能使用,如果没有使用这些功能的权限是无法执行这些功能的。车辆资料的内容有:车辆编码、车牌号、品牌型号、车辆类型、所属部门、车辆状态、驾驶员、购买日期、登记日期、终端号码,需要实现的功能有:

  • 新增车辆资料

  • 修改车辆资料

  • 删除车辆资料

  • 查看选中的某车辆资料

  • 根据条件查询车辆资料

  • 打印(可选项)

2.1.2 派/收车管理

车辆管理系统一般都提供有派车/收车的功能,本系统同样也不能例外。用户可通过派车/收车管理的功能来分配车辆的使用和收回已经派出的车辆,根据情况来分配车辆可提高车辆的使用效率,减少费用。因为用户有时候需求查阅历史派车记录或收车记录,所以在该功能里面,必须能够根据用户所提供的查询条件来查阅这些记录,同时,为了能够方便用户收车,也要提供一个查阅未收车辆的查阅的功能,这样,用户就能够通过该功能来轻松查阅未收车辆和很方便的对未收车辆进行收车。

因为在派车的时候可能会对同一辆车进行多次派车,而这些派车之间也可能会产生时间冲突,所以在派车的时候要先对该车辆的使用时间进行检测,如果与其它的派车时间产生冲突就要提示用户冲突的时间,这样就方便用户改变派车时间或使用其它没有冲突的车辆。

派车/收车记录所维护的信息有:车辆编码、车牌号、驾驶员、驾驶员电话、用车人、用车人电话、用车部门、用车时间、估计返程时间、出发地点、途经地点、目的地点、用车原因、派车人、审批人、登记日期、是否已收车、收车人、备注。

如果想要使用这些功能的用户必须具备这些权限。需要实现的功能有:

  • 派车

  • 收车

  • 根据条件查询历史派车记录

  • 根据条件查询历史收车记录

  • 根据条件查询未收记录

2.1.3 终端管理

因为车辆要与地图和GPS结合起来,所以必须要在汽车上安装一个定位地理位置并将位置信息发送到服务器上的终端。

在终端管理功能模块中,用户可对终端信息进行新增、修改、删除,同时也可指定查询信息对终端进行查询操作。终端中的一些动态信息会根据终端返回到服务器的数据进行实时更新,比如终端对应车辆所处的实时地理位置信息和车辆的实时速度等。终端信息的内容有:终端号、终端名、当前地址、证书、终端电话、权限、是否在线、所属车队、用户组、备注、登记时间。

使用该功能的用户必须具备该权限。需要实现的功能有:

  • 新增终端资料

  • 修改终端资料

  • 删除终端资料

  • 根据条件查询终端资料

2.2 权限管理

为了让系统用户的操作在一个可控的安全范围之内,本系统将权限管理作为一个基础功能需求,权限管理包括了系统用户管理、角色管理、和权限管理。有权限的用户可通过该功能来给用户分配角色、给角色分配权限或给角色分配车队(该角色有权限管理的车队),同时也可对用户、角色进行管理,即:权限管理不单纯的是权限管理,同时也包括了系统用户、系统角色的管理,这些都被隶属于权限管理之中。

2.2.1 系统用户管理

系统用户是登入系统的凭证,进入系统后只能使用该用户有权限使用的功能。为了提高系统的可控性以及实用性,本系统提供了系统用户管理,使得系统管理员可对系统用户进行有效的一致性管理。系统用户所维护的信息有:id、名称、密码、性别、生日、地址、籍贯、证件号码、部门、入职时间、手机号码、家庭号码、创建时间(注册时间)、创建者ID。其中密码需要使用MD5算法加密。需要实现的功能有

  • 新增用户资料

  • 修改用户资料

  • 删除用户资料

  • 根据条件查询用户资料

2.2.2 角色管理

为了使系统中与用户对应的权限易于管理,系统引进了角色管理,每个角色对应不同的权限,给需要给用户分配权限时,只需给用户分配角色即可,一个用户可对应多个角色,他真正的权限就是他所对应角色的权限的并集。需要实现的功能有:

  • 新增角色

  • 删除角色

2.2.3 权限管理

系统中有很多的功能,但为了使系统更安全、稳定、可控,并不是每个系统用户都能使用所有的这些功能,而权限是决定系统用户是否能够使用某个系统功能的标志,所以在本系统中,用户能够使用的功能都是根据权限来分配,而用户的权限都是根据他所对应的角色来获取,这就产生了两个映射:用户 -> 角色;角色 -> 权限。需要实现的功能:

  • 给角色添加权限

  • 给角色删除权限

  • 保存角色—权限的对应关系

2.2.4 系统用户对应的角色的管理

为了方便用户权限的管理,如果需要给用户分配权限,只需要给用户分配对应的角色即可。一个用户可对应多个角色,他的权限就是用户所对应角色的权限的并集。这种权限管理方式大大提高了权限分配的方便性,也大大减少了系统管理员的工作量。需要实现的功能有:

  • 给用户分配角色

  • 给用户删除角色

  • 保存用户—角色的对应关系

2.2.5 角色对应车队的管理

在系统中可能会存在多个车队,而为了让管理划分得更清晰明了,也不是每个系统用户都能对所有的车队进行管理。给用户分配车队也是基于角色来分配的,我们只需要给角色分配该角色有权限管理的车辆,然后按照需要来给用户分配对应的角色即可。用户所能管理的车队就是该用户对应的角色有权限管理的车队的并集,换句话说,我们只要能获取到该用户的角色,就知道该用户能管理哪些车队。需要实现的功能有:

  • 给角色添加车队

  • 给角色删除车队

  • 保存角色—车队对应关系

2.3 地图

地图功能是本系统的新特性。

提供地图除了可以让用户对车辆管理有一个全新的体验外,还大大地提高了系统的实用性,系统管理员可借助该功能让管理变得更实体化,对于车辆的监控变得更加明显、可靠。本系统将车辆与地图和GPS有效地结为一体,将车辆的实时位置在地图上显示出来,让用户能够在地图上实时监控车辆的实时位置信息和速度信息,同时还可以在地图上添加标注、绘制路线、绘制区域,也可以将绘制的区域分配给指定的车辆,规定该车辆不能进区域或不能出区域,大大地提高了监控的方便性和系统的实用性。在该功能模块中主要包含了以下的子功能模块:

  • GPS功能

  • 地图编辑

具备的功能需求如下:

2.3.1 GPS功能

要想在地图上定位车辆的位置信息,必须要将GPS跟车辆关联起来。GPS功能就是将GPS终端跟车辆结合起来的一个功能,因为一个终端跟一辆车是一对一的关系,所以只要通过终端将位置信息发送到服务器就可定位到地图上的一辆车。

同时为了更好地对车辆进行管理,在该功能模块中还必须要提供对某个车辆进行动态跟踪、数据统计和轨迹回放的功能,通过这几个功能,用户可以很方便地了解车辆的历史状态信息的实时状态信息。在本功能模块中需要实现的功能列表如下

  • 查找车辆:可以按车牌号、编号、驾驶员、终端号、终端名等模糊信息查找,只要按确定后会自动转到该车在地图上的位置,同时在车辆信息列表栏中也会选中。

  • 列表车辆:在树型列表KH 按照车队分类来列出用户有权限管理的车辆,列表车辆时显示车辆在线/不在线的标志,在树型列表选中车辆时,在地图上显示车辆和车辆详细信息,地图以车辆为中心。

  • 查看车辆信息:可以查看地图上看到的车辆信息,包括运行状态和车辆详细信息。

  • 车辆信息查询:可以实时查询在地图上看见的任何一辆车子的静态信息,无需去车辆详细信息管理栏去找,并可了解当前车辆的运行状况。

  • 车辆跟踪定位:实时性地对车辆的情况进行跟踪,双击车辆信息列表栏的车牌号,自动转到该车在地图上的位置。

  • 动态跟踪:新建窗口对选定的车辆进行实时监控,显示车辆轨迹,地图以车辆为中心,也就是地图会随着车辆的移动而移动。

  • 轨迹回放:可以随时查看每台车辆任意时间段行驶轨迹图,方便直观地展示某车在某时间段内的行驶轨迹,能在回放结束之后选择重新回放或重新选择时间段来回放。半年内的数据均可调出进行回话,方便管理人员对车辆进行系统的监控和检查。

  • 数据统计:可根据时间区段和设定的速度阀值绘制速度曲线图,非常直观地显示车辆工作过程中的速度变化,对超速和车辆的平稳驾驶性一目了然,便于管理从员了解车辆的违规情况以及驾驶平稳性的情况。列表超速信息,双击超速信息会转到地图上相应的超速位置,并绘制出超速的轨迹。还能够列表出失去监控车辆的统计列表并打印。

2.3.2 地图编辑

为了方便用户的使用,提高地图的实用性,本系统增加了地图编辑的功能,在该功能模块中,用户可根据需要在地图上添加自己的标注、绘制区域,并可选择将之保存到数据库中,以后登录时都会在地图上显示该用户对应的标注和路线,同时用户也可对这些标注和路线进行管理,比如重命名、删除等。区域是针对整个系统来管理而不是针对用户来管理的的,即一个用户绘制了一个区域并保存到数据库中时,其他的系统用户同样能对该区域进行分配、管理。在本功能模块中要实现以下几个子功能模块以满足用户的需求:

  • 搜索:可通过输入地名来进行地图搜索。

  • 刷新地图:可对地图进行刷新。刷新后系统会重新从数据库中查询标注、路线、区域、车辆终端来在地图上标注出来。相当于对车辆终端进行重新定位。

  • 添加标注:用户可根据需要在地图上添加自己的标注,比如为了方便查找某个地方,可在该地方加上一个标注,以后可通过该标注找到该地方。标注可以选择保存到数据库中,如果不保存到数据库中下次登录时将不会在地图上显示标注。每次登录时系统都会从数据库查询出属于该登录用户的标注来在地图上显示出来。

  • 绘制路线:当有的一些道路比较偏僻地图上没有或者不详细,可自己进行绘制并给该道路命名。绘制好的路线同样可以保存到数据库中,如果不保存到数据库中下次登录时将不会在地图上显示出来。每次登录时系统都会从数据库查询出属于该登录用户的路线来在地图上显示出来

  • 绘制区域:可以在地图上绘制区域并用于分配给车辆,并选择是进报警区域(某车辆进入该区域时报警)还是出报警区域(某车辆出了该区域时报警),绘制的区域可选择保存到数据库中,不保存到数据库中的区域无效,下次登录时也不会在地图上显示。每个系统用户,只要具有使用地图功能的权限,都可对区域进行修改、删除等编辑操作,因为区域是针对于整个系统的。

  • 给车辆终端分配/删除报警区域:如果需要给车辆终端分配报警区域时要使用该功能。通过列表出来的区域和车辆终端,可以把指定区域分配给指定的车辆终端,分配时需要能够选择该区域是进报警区域还是出报警区域,需要能够同时给一个车队或者一个车辆的终端分配一个或多个报警区域。删除报警区域跟分配报警区域差不多,也需要能够同时删除一个车队或一个车辆的一个或多个报警区域。

  • 双击区域时跳转到地图对应位置上:为了方便查看区域或某车辆终端对应的报警区域,双击区域进可自动跳转到地图的对应位置上。

3 相关技术和开发平台

3.1 Microsoft Visual C++ 6.0

Visual C++ 6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。

选用VisualC++ 6.0的原因有:

  • 效率:借助Visual C++ 6.0环境进行MFC开发具有强大的控件支持和可视化操作,提高开发效率。
  • 结构清晰:能够实现MVC框架,界面代码与业务逻辑代码能够分离,代码结构清晰,易懂,易于维护。
  • 易于配置:使用Visual C++ 6.0开发MFC只需要安装即可,并不需要其它额外的配置,非常方便。

3.2 SQL Server 2000

SQL Server 2000, 是Microsoft 公司推出的SQLServer 数据库管理系统的新版本。该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好、与相关软件集成程度高等优点。

本车辆信息管理系统使用SQLServer 2000数据库来保存车辆的各种信息,并通过SQL语句来对这些信息进行管理。

3.3 SOGOU地图API

SogouMaps JavaScript API 是由javascript语言编写的地图应用程序接口。使用Sogou Maps JavaScript API 可以轻松的在网站中构建丰富的地图应用。用户从搜狗地图的官网上得到这些API的详细说明及参考实例。

在本系统中,地图部分的功能都是使用Sogou地图的API结合JavaScript、HTML和MFC来完成。

3.4 C/S结构

C/S 结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

  • Client:Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户

  • Server:Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序

本系统主要是进行客户端的开发。

3.5 系统所需配置简介

  • 服务器配置

    • 数据库服务器:CPU P4 3.0G以上,内存1G以上,硬盘80G以上,Windows server 2000 及以上

    • 应用服务器:CPU P4 3.0G以上,内存1G以上,硬盘80G以上,Windows server 2000 及以上

  • 客户端系统配置

    • IBMPC 及其兼容机:CPUP4 2.0G以上,内存256M以上,硬盘40G以上,Windows 2000/2003/NT/XP 中文操作系统

    • 浏览器:InternetExplorer 6

    • 注册 MSCHART 控件

3.6 系统开发所需关键技术

由于本系统的开发在地图模块涉及到JAVASCRIPT语言跟MFC之间的通信,所以这两者之间通信的实现是系统能正常进行开发关键,在本系统的实现中,将JAVASCRIPT(JS)与MFC之间的通信分别分为两部分来实现:JS跟MFC的通信和MFC跟JS的通信,以下分别对这两个部分的实现和使用进行详细说明。

3.6.1 MFC跟JS的通信

在本系统的开发中,MFC嵌入的浏览器控件将会是IWebBrowser2 控件,MFC 跟 JS 之间的通信可以通过以下几个步骤来完成:

  • 获得IHTMLDocument2接口指针。因为本系统中使用的是IWebBrowser2,这一步可以略过

  • 在HTML文档中获取JS对象的IDispatch。该指针可通过IWebBrowser2的GetDocument接口函数来获得

  • 通过提供的JS函数得到DISPID,DISPID可以通过IDispatch的GetIDsOfNames接口函数来获取

  • 把JS函数所需的参数都添加到DISPPARAM结构体中

  • 通过使用IDispatch接口的Invoke方法调用JS函数

为了方便使用起见,把以上的步骤都封装到了CWebPage类中,实例化该类后,只需通过IWebBrowser2的GetDocument接口函数来获取浏览器控件的IDispatch指针,然后通过CWebPage对象的SetDocument接口函数来设置IDispatch指针,最后就可以通过CWebPage对象的CallJScript接口函数来直接调用浏览器控件对应的JS函数。

3.6.2 JS跟MFC的通信

在本系统通过自定义CWebBrowser2类来实现JS调用MFC的函数,同时也将COleControlSite和IDispatch分别封装成CCustomControlSite和CImpIDispatch类。要想使某个VC的函数在JS代码中能够被调用,必须要在VC的代码中实现某些代码,比如要想在JS中调用VC的某个函数 Func(),必须要经过以下几个步骤:

1.在ImpIDispatch.cpp中添加:

  1. CString cszCB_Func="CB_Func";

2.在ImpIDispatch.cpp中添加宏定义:

  1. #define DISPID_CB_Func xx(自定义)

3.在ImpIDispatch的GetIDsOfNames函数的for循环中附加以下判断:

  1. if (cszName == cszCB_Func) {
  2. rgDispId[i] = DISPID_CB_ Func
  3. }

4.在ImpIDispatch的Invoke函数中添加以下判断:

  1. if (dispIdMember == DISPID_CB_ Func) {
  2. if (wFlags & DISPATCH_METHOD) {
  3. Func();
  4. }
  5. }

5.以上的步骤完成后,可以在JS中通过以下的代码来对Fucn函数进行调用:

  1. if(bIsCustomBrowser){
  2. window.external.CB_Func();
  3. }

bIsCustomBrowser是用来验证当前执行JS代码的浏览器控件是否是自定义的浏览器控件,可以在JS代码中通过调用判断window.external.CB_IsOurCustomBrowser是否为空来识别是不为自定义浏览器,如果为空,是自定义浏览器,不为空则否。

4 总体设计

4.1 系统设计目的

系统设计的目的:根据新系统的逻辑模型建立模型,详细地确定新系统的功能需求和结构以及具体实施方案的过程,即解决“怎么做”的问题。对于开发大型的信息管理系统,具体的、系统的分析与设计尤为重要,这关系到系统开发的效率以及系统实施的成功与否,是否在对的方向上做事。在软件工程的思想中,系统需求分析是放在首位的,是一切系统工作的开始。明确而正确的系统设计能很大程度地提高后期的开发效率,降低开发成本,同时也能从根本上降低后期维护花费的成本。所以,为了能收获以上的好处,必须明确系统设计目的,从而能够指导后期的开发工作,使开发工作走上正确的轨道。

4.2 系统总体构架

本车辆管理系统的系统构架主要以增强系统的可扩展性为主,系统管理人员只需要修改极少的代码即可将新功能添加到系统或从系统中删除一些不必要的功能。所以本系统很容易就能够满足各种不同的需求。

本系统的总体构架应该以TAB控件的形式显示出来,如果需要将新功能添加到系统中,只需要在合适的TAB上添加一个对应的新标签就可将功能添加到系统中,而如果要从系统中删除某个TAB上的功能的时候,同样只需要在代码中功能对应的TAB标签删除即可,当然也要删除代码中与之相关的代码。TAB的各标签之间的关联性尽可能地低,互相之间不存在依赖,它们只是共用一组基础类。这样,系统的扩展性就可以得到很好的体现。这种可扩展性大大提高了系统的灵活性和可维护性,降低系统后续的各种费用,有助于今后系统的升级。

本系统的大休划分为以下几个大块:

  • 车辆管理

  • 权限管理

  • 地图

本系统的总体结构图如图4.1所示:

为了降低代码的复杂度和便于系统今后的维护,本系统将尽可能地将界面代码跟业务逻辑代码区分开来,这样的代码将更有模块性和阅读性。

在本系统中,用户界面都是基于MFC对话框在TAB控件中呈现出来,而对于数据库的操作除了有一个连接数据库和对数据库进行操作的基础类之外,其它的都是基于该基础类的针对于某个功能的数据库操作类,比如专门操作用户的类、操作车辆资料的类或操作终端资料的类,各个模块的划分非常清晰明了。总的来说,本系统将是严格按照模块化来进行系统的开发设计,各个界面模块、业务逻辑模块和数据库操作模块都是互相独立的。

系统的逻辑结构图如图4.2所示:

在本系统的开发研究中,使用的是面向对象的C++语言,依据系统的总体结构,本系统类的设计主要也是分为三层类:用户界面层的类、业务逻辑层的类和数据库连接操作层的类,各层之间有一定的依赖关系,比如用户界面层对数据库的操作要依赖于业务逻辑层,而不是直接依赖于数据库连接操作层,而业务逻辑层对数据库的操作则要依赖于数据库连接操作层,同样数据库连接操作层的类和业务逻辑层的类不会对用户界面层的类有任何依赖关系,关键类的关系如图 4.3所示:

4.3平台系统结构

现在的桌面软件一般采用的都是C/S结构,C/S是将任务分配到客户端和服务器来发挥两端硬件环境优势。客户端的任务是将用户的请求提交给服务器程序,再将服务器程序返回的结果以特定的形式显示给用户。而服务器的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。

本系统在设计上采用的是C/S结构来实施,客户端主要的任务是提供给用户使用的功能接口并将各种处理结果在UI上显示给用户;服务器则主要是处理客户端发过来的各种请求,并将处理结果回发给客户端,同时服务器还接收终端发过来的地理位置信息和其它信息,并将这些信息保存到数据库中。多个客户端可同时连接到服务器并可以同时向服务器发送各种请求,服务器能够处理多个客户端的并发请求,并且要能够准备无误地将客户的请求结果返回到客户端。

本系统的平台应用体系架构如图4.4所示:

4.4 数据库设计

数据库设计是管理系统实现中的一个重中之重,良好的数据库设计能大大的提高系统的安全性、稳定性和可靠性,对系统的性也能够得到一定程序上的提高,并且良好的数据库设计对后面的系统设计开发实现都有着深远的影响,因为良好的数据库设计能使开发变得更容易,更高效,也能够使今后的维护变得更简单。

本系统的一些数据流图如图4.5 , 图4.6 所示:


本系统的数据库表比较多,依据系统具体功能划分,得到的实体有:车辆、终端、系统用户、角色、权限、驾驶员、部门、车队、派车/收车信息、标注、路线、区域等。数据库的E-R如图 4.7 所示:

4.4.1 车辆管理

4.4.1.1 车辆资料管理

车辆详细资料表:该表定义了车辆的所有详细数据,车辆各种内容在该表中都能体现出来。对车辆进行管理时需要直接对该表进行操作,比如车辆资料资料的增删改查都必须跟该表直接打交道。对应系统的车辆资料管理的功能界面。具体定义如表4.1所示:

字段名称 数据类型 字段说明
Id int 主键
Coding varchar(16) 车辆编码,唯一索引值
Number Varchar(16) 车牌号
Carbrand Varchar(64) 车辆商标
Cartype Varchar(64) 车辆类型
Belongdept Varchar(16) 所属部门
Carstatus Bit 车辆状态
Driver Varchar(16) 驾驶员
Buytime Datetime 购买日期
Entertime Datetime 登录日期
Terminalnum Varchar(16) 终端号码

驾驶员资料表:驾驶员可能会是公司的主要组成部分,对于出租出公司或其它汽车公司来说,驾驶员更加显得重要,所以保存驾驶员资料是一件非常重要的事情。驾驶员资料表就是用于在数据库中保存驾驶员资料的,对于驾驶员的管理,比如增删改查都要直接操作该表,该表的具体定义如表4.2:

字段名称 数据类型 字段说明
Id Int 主键
Coding Varchar(16) 驾驶员编码
Name Varchar(16) 驾驶员名字
Sex Tinyint 驾驶员性别
Status Tinyint 驾驶员状态
Dept Varchar(16) 所属部门
Type Varchar(32) 驾驶类型
Phone Varchar(16) 驾驶员电话
Identitycard Varchar(24) 身份证号码
intme Datetime 入职日期
adress varchar(64) 家庭住址
Comment varchar(64) 备注

部门表:公司内部可能会有不同的部门,公司的车辆也可能隶属于不同的部门,所以为了方便各个部门对属于自己部门的车辆进行管理,本系统中添加一个部门表来保存各个部门的车辆信息,但该表不用于专门对部门进行更深一步的管理,所以该表的设计比较简单。该表的的定义如表4.3:

字段名称 数据类型 字段说明
id int 部门ID
coding varchar(16) 部门编码
name varchar(16) 部门名称

4.4.1.2 派车/出车管理

派车收车表:当公司的成员要使用车辆时,必须要登记好用车的原因、目的等明细情况,以便今后对各用车记录进行详细调查。该表的的定义如表4.4:

字段名称 数据类型 字段说明
id int 派车记录的ID
coding varchar(16) 派车记录的编码
number varchar(16) 用车车辆的车牌号码
driver varchar(24) 出车的驾驶员
driverphone varchar(16) 出车驾驶员的手机号码
user varchar(16) 用车人
userphone varchar(16) 用车人号码
dept int 用车人部门
usertime datetime 使用时间
backtime datetime 估计返回时间
startplace varchar(64) 起始地址
viaplace varchar(64) 途经地址
destination varchar(64) 目的地址

4.4.1.3 终端管理

终端表:为了使车辆与地图和GPS结合起来,必须得要将终端的信息记录到数据库中,所以数据库中也需要有相应的表来保存终端的信息,终端表就是用来保存终端信息记录的表,该表的定义如表 4.5所示:

字段名称 数据类型 字段说明
id int 终端ID
coding varchar(16) 终端编码
name varchar(64) 终端名称
adress varchar(64) 终端当前地址
contract varchar(20) 合同
phoneno varchar(20) 终端电话
deny tinyint 权限
online bit 终端是否在线
longitude float 终端对应车辆当前地理位置的经度
latitude float 终端对应车辆当前地理位置的纬度
speed float 终端对应车辆的当前实时速度
degrees float
time datetime 终端登记时间
comment ntext 备注
password varchar(33) 终端密码
usergroup int 终端对应车辆所属用户组
cargroup int 终端对应车辆所属车队
inzone ntext 终端对应车辆所对应的进入报警区域
outzone ntext 终端对应车辆所对应的出去报警区域

4.4.2 权限管理

系统用户表:系统用户表中保存的是用户的信息数据,每个系统用户信息都可在系统用表中查询得到,该表对应的是权限管理中的用户管理,比如增删改查,该表的定义如表4.6所示:

字段名称 数据类型 字段说明
id int 系统用户的 ID
name varchar(20) 系统用户的名称
password char(33) 系统用户的密码
sex char(2) 用户性别
birthday datetime 用户生日
adress text 用户住址
nativeplace text 用户籍贯
credentialnum char(20) 用户证件号码
dept int 用户所属部门
entertime datetime 入职时间(或注册时间)
mobile char(11) 用户手机号码
homephone char(12) 用户家庭号码
createtime datetime 创建账号时间(注册时间)
craeteby int 创建者

角色表:角色表是保存系统角色的信息,但由于本系统不提供专门用于角色管理的功能,对于角色管理只提供一个简单的添加角色和删除角色的功能,所以根据需要该表的设计比较简单,该表的定义如表4.7所示:

字段名称 数据类型 字段说明
id int 角色的 ID
name text(16) 角色名称
mid int 创建该角色的系统用户
createtime datetime 角色的创建时间

角色权限表:系统中的每个角色都应该有与这对应的权限,而角色—权限表就是用于保存角色对应的权限信息,角色权限的获取就是通过查询该表并按照特定的算法来分析得到的权限编码,该表的定义如表 4.8 所示:

字段名称 数据类型 字段说明
id int 角色—权限映射的 ID
rid int 映射的角色ID
mid int 创建该映射的系统用户
createtime datetime 角色的创建时间
purviewcoding ntext 角色的权限编码

系统用户角色表:系统中的每个系统用户都应该对应某一个或几个角色,而系统用户—角色表就是用于保存系统用户对应的角色信息,该表的定义如表 4.9 所示:

字段名称 数据类型 字段说明
id int 角色—权限映射的 ID
rid int 映射的角色ID
mid int 创建该映射的系统用户
createtime datetime 角色的创建时间
purviewcoding ntext 角色的权限编码

角色车队表:在系统中用户有权限管理的车队是根据角色来定义的,某个用户能够管理管理即是他所对应的角色有权限管理的车队的并集,在系统中的角色一般都会对应该角色所能管理车辆,而该对应关系就是保存到角色—车辆队表,该表的定义如表4.10所示:

字段名称 数据类型 字段说明
id int 角色—车队映射的 ID
rid int 映射的角色ID
cid int 映射的车队ID
mid int 创建该映射的系统用户ID
createtime datetime 映射的创建时间

4.4.3 地图

4.4.3.1 GPS 功能

跟踪表:跟踪表是记录终端对应车辆历史经过的轨迹,以便日后对车辆历史经过轨迹进行清查,该表的详细定义如表4.11所示:

字段名称 数据类型 字段说明
id int 跟踪记录的 ID
tid int 跟踪记录对应的终端ID
longitude float 跟踪到某个点车辆的经度
latitude float 跟踪到某个点时车辆的纬度
speed float 跟踪到某个点时车辆的速度
degrees float
waterlevel float
time datetime 跟踪到某个点时的时间

4.4.3.2 地图编辑

标注表:为了方便用户的使用和提高地图的实用性,本系统提供了添加标注的功能。为了保存用户添加到地图上的标注,在数据库中添加一了个标注表,该表的定义如表4.12所示:

字段名称 数据类型 字段说明
id int 标注ID
name varchar(24) 标注名称
longitude float 标注在地图地理位置上的经度
latitude float 标注在地图地理位置上的纬度
entertime datetime 标注添加到数据库的时间
picpath varchar(30) 标注图片路径
mastered int 标注所属的系统用户,也就是标注的创建者

系统用户路线表:为了方便用户的使用和提高地图的实用性,本系统提供了添加路线的功能。为了保存用户添加到地图上的路线,在数据库中添加一了个系统用户和路线的对应表,该表的定义如表4.13所示:

字段名称 数据类型 字段说明
id int 路线 ID
masterid int 路线所属的系统用户的ID
polyid varchar(20) 路线ID
polyname varchar(34) 路线名称
entertime datetime 路线添加到数据库的时间

系统用户区域表:为了方便用户的使用和提高地图的实用性,本系统提供了添加区域的功能。为了保存用户添加到地图上的区域,在数据库中添加一了个系统用户和区域的对应表,该表的定义如表4.14所示:

字段名称 数据类型 字段说明
id int 区域 ID
masterid int 区域所属的系统用户的ID
zonecoding varchar(20) 区域编码
zonename varchar(24) 区域名称
entertime datetime 区域添加到数据库的时间

路线表:路线表是为了能够保存系统用户在地图上绘制上的路线,该表的设计比较简单,它的定义如表 4.15 所示:

字段名称 数据类型 字段说明
id int 路线 ID
longitude float 路线一个点的经度
latitude float 路线一个点的纬度

区域表:区域表是为了能够保存系统用户在地图上绘制上的区域,该表的设计比较简单,它的定义如表 4.16 所示:

字段名称 数据类型 字段说明
id int 区域 ID
longitude float 区域一个角对应的经度
latitude float 区域一个角对应的纬度

5 系统功能模块的技术实现

本章节描述的是系统的详细设计。在该节中,会较为详细地说明系统中各个模块的设计、各个模块之间的接口和模块之间的依赖性。

车辆管理系统采用的C/S架构,而本文档讨论的是客户端系统的设计。

本系统的用户界面是基于TAB来实现的,即基本每个功能模块都是基于TAB标签中的对话框来设计,这样设计的好处是容易保持各功能模块之间的独立性,并且容易对功能进行新增或删除,也方便于日后的维护。

因为本系统使用的是面向对象的C++语言来开发,所以系统的详细设计都是基于类来设计的,在类的设计中层次分明。

5.1 登录

系统用户一般会对应一个或几个该用户有权限管理的车队,在用户登录时可对他所能管理的车队进行选择性管理,比如只管理某个车队或某几个车队。该流程如图 5.1所示:

5.2 车辆管理

车辆管理功能模块是管理车辆管理系统的基础资料,比如车辆资料管理、派车/出车管理、终端管理等。该功能模块包含以下几个子功能模块:

  • 车辆资料管理

  • 派车/出车管理

  • 终端管理

车辆管理的功能图如图 5.2所示:

各功能模块的详细设计如下:

5.2.1 车辆资料管理

本模块主要是实现车辆详细资料的管理,用户可使用该功能来管理车辆的资料数据,比如车辆资料的增删改查等。

该功能的实现非常简单,先从数据库中查询出登录用户所选择车队中的所有车辆,并将查询出来结果显示在窗口的列表中。用户可根据窗口中提供的按钮来使用增删改查的功能。

5.2.1.1 查询

可通过输入文本来进行模糊查询,查询的关键字有车辆编码、’车牌号、品牌型号、车辆类型、所属部门、’驾驶员、’终端号,当用户点击“查询”按钮时,先获取用户输入的按钮,再组装成一条模糊查询的SQL语句,返回执行语句的查询结果并在列表中显示出来,查询功能的流程图如图 5.3 所示。

5.2.1.2 新增

通过“新增”按钮可以将新的车辆资料录入到数据库中。当用户点击“新增”按钮时,会弹出资料录入对话框,用户可以在该对话框中输入车辆资料,新增的流程图如图 5.4 所示。

5.2.1.3 修改

通过“修改”按钮可以修改选中的车辆资料。当用户点击“修改”按钮时,弹出修改车辆资料的窗口,用户点击保存按钮后,获取用户修改过后的车辆资料,组装成更新数据库的SQL语句,通过更新数据库来将修改过后的车辆资料保存到数据库中,修改车辆资料的功能流程图如图 5.5 所示。

5.2.1.4 删除

可以通过“删除”按钮来删除某些车辆资料。当用户点击“删除”按钮时,先获取用户所选择的车辆资料,再获取所选择的车辆资料的ID,根据ID来删除这些车辆资料数据,删除车辆资料的功能流程图如图 5.6 所示。

5.2.2 派车/收车管理

派车/收车管理是车辆管理系统的重要的一部分,系统用户会经常性地使用该功能模块,所以该模块的设计要尽可能地方便用户的使用,以便提高用户的工作效率。在本功能模块中,包含了派车、收车、按条件查询派车记录、按条件查询收车记录、按条件查询未收记录,同时在该模块中,列表将会三个不同的视图模式:

  • 派车记录:在这个模式下,列表默认显示数据库中所有的派车记录,当用户在这个模式下使用查询功能时,只会按照用户输入的条件来查询数据库中对应的派车记录并在列表中显示出来

  • 收车记录:跟上个模式差不多,只是列表中只会显示收车记录

  • 未收车辆:跟以上两个模式差不多,只是列表中只会显示未收车辆的记录

5.2.2.1 查询

查询的条件有:用车的起始时间、用车结束时间、用车部门、目的地、用车人。当用户点击“查询”按钮时,系统会获取用户所输入的查询条件和当前列表的视图模式,组装成SQL语句从数据库中查询,并将查询结果显示到列表中,查询记录的功能流程图如图 5.7 所示。

5.2.2.2 派车

派车是一个经常使用的功能。当用户点击“派车”按钮时,会弹出一个派车窗口,用户只需要在该窗口中选择性的填充内容再点击“确定”按钮即可成功派车。但是在保存派车选项数据之前,必须要对某些选项的合法性进行检测。要检测的项目有:

  • 估计返程时间是否小于开始用车的时间

  • 所选择的车辆在开始和估计返程这段时间内是否与该车辆的其它派车有冲突

使用派车的流程图如图 5.8 所示。

5.2.2.3 收车

收车跟派车一样也是个经常使用的功能。当用户点击“收车”按钮时,获取列表中选中的项,如果只是选中了一个项,判断选中的项是否已经收车,如果没有则弹出收车信息录入窗口;如果选中的是多个项,将遍历所有选中的项,并判断选中的项是否已经收车,如果还没有收车,就将收车人默认设置为登录的用户并直接将收车信息保存到数据库中,然后更新列表中的信息内容。使用收车的流程图如图 5.9 所示。

5.2.3 终端管理

终端管理是功能模块能够对终端的资料进行增删改查等功能。终端管理功能模块初始化时,先从数据库中将用户所能有权限管理的终端从数据库中查询出来,再将查询结果显示在列表中。该功能模块的子功能模块有:查询终端资料、新增终端资料、修改终端资料、删除终端资料,这些功能模块主要依赖于终端的操作类。

5.2.3.1 查询

查询是获取用户输入的搜索文本,再将用户输入的文本组装成对某些特定的字段进行模糊查询的SQL语句并用该SQL语句查询数据库,最后再将查询结果在用户界面上显示出来。终端查询的模糊查询的字段有:终端名、当前地址、所属车队、所属用户组等,在以后的升级中,可能会提供更强大的模糊查询功能。使用终端查询的流程图如图 5.10 所示。

5.2.3.2 新增

通过“新增”按钮可以添加新的终端资料。当用户点击新增按钮时,弹出新增终端资料的窗口,用户点击保存按钮后,获取用户录入的终端资料,首先要对用户输入的合法性进行检测,检测合法后再将终端资料数据组装成插入SQL语句,通过插入数据来将终端资料保存到数据库中,如果不合法则提示用户错误信息。需要检测的有两次输入密码是否一致、密码长度是否过长。新增终端资料的流程图如图 5.11 所示。

5.2.3.3 修改

通过“修改”按钮可以修改选中的终端资料。当用户点击“修改”按钮时,弹出修改终端资料的窗口,用户点击保存按钮后,获取用户修改过后的终端资料,同样首先要对用户输入的合法性进行检测,检测合法后再将修改后的终端资料组装成更新数据库的SQL语句,通过更新数据库将修改内容保存到数据库中,如果不合法则提示用户错误信息。需要检测的有两次输入密码是否一致、密码长度是否过长,修改终端资料的流程图如图 5.12 所示。

5.2.3.4 删除

通过“删除”按钮可以删除选中的终端资料。当用户点击“删除”按钮时,首先获取用户选择中的终端资料中的终端编码,通过终端的唯一索引之一终端编码来从数据库中删除对应的终端资料,并更新终端列表内容,删除终端资料的流程图如图 5.13 所示。

5.3 权限管理

权限管理是用于管理用户、角色、用户角色对应关系、角色权限对应关系、角色车队对应关系。在权限管理功能模块中,主要包括的子功能模块有:

  • 用户管理

  • 角色管理

  • 保存权限(保存用户-角色对应关系、角色-权限对应关系、角色-权限对应关系)

其中用户管理和角色管理的实现都比较简单,只是涉及关于数据库的一些操作,跟车辆资料管理的实现在雷同之处,所以在这里就不再详细叙述,若要了解详细内容,可借鉴车辆资料管理中的实现。

权限管理的功能模块图如图 5.14 所示。

5.3.1 保存权限

当用户点击“保存权限”按钮后,系统要完成的工作有以下几个:首要获取系统用户当前选中的用户和当前选中的角色,再获取角色的勾选项、权限的勾选项及车队的勾选项,再分别将选中的用户跟勾选的角色对应起来、选中的角色跟权限的勾选项对应起来、选中的角色跟车队对应起来。

将三组关系正确对应起来之后,再依次将这三组关系与原来的关系进行对比,得出两者之前不同的部分,比如新增的对应关系或删除的对应关系,分类保存新增的对应关系和删除的对应关系,如果既没有新增的对应关系也没有删除的对应关系,也就是对应关系没有任何改变,就不用对数据库进行修改,否则就分别将新增的对应关系和删除的对应关系保存到数据库中。该模块的活动图如图 5.15所示:

5.4 地图功能

地图是本系统最主要的需求功能之一。在本系统中,地图的实现使用了SOGOU地图的API结合JAVASCRIPT和MFC的WEBBROSWER2控件来实现。而在地图功能的实现当中,最主要的难题是JAVAXRIPT 和MFC 程序之间的相互通信。在本系统中,JAVASCRIPT和MFC之间的通信使用了CWebPage类和ImpIDispatch技术。

5.4.1 地图初始化

在地图初始化的时候,首先从数据库中读取登录用户的标注和路线,还有全部的区域,通过调用JAVASCRIPT的函数来在地图上将这些内容显示出来。在往地图上添加标注的时候,顺便给标注添加上响应单击事件和右键事件,往地图上添加路线和区域时也顺便给路线和区域添加单击事件。地图初始化的活动图如图 5.16所示:

5.4.2 GPS功能

当GPS功能模块初始化时,先从数据库中根据车队来分类查询出终端-车辆对应的车辆资料,再按照这种对应关系来在树形列表中显示出来。GPS功能模块中主要包括的子功能模块有动态跟踪、轨迹回放、数据分析、查看车辆信息等。以下是分别对这几个子功能模块的设计进行详细分析。

5.4.2.1 动态跟踪

动态跟踪提供的是对某辆特定的车辆进行实时监控,并在地图上绘制出车辆经过的轨迹,地图会随着车辆的移动而移动。

当用户点击“动态跟踪”按钮时,首先获取用户在树形列表中选中的项包含的数据,该数据是选中车辆的ID,将该ID和终端名传递到动态跟踪窗口中。在跟踪窗口内定时查询数据库中对应ID的实时位置和速度信息,并将实时信息显示到动态跟踪的地图上,同时地图会根据车辆的实时位置而改变地图的中心。动态跟踪的活动图如图 5.17所示。

5.4.2.2 轨迹回放

当用户点击“轨迹回放”按钮时,首先获取用户在树形列表中选中的项的数据,这个数据即是选中车辆的终端ID,点击按钮后,会弹出一个轨迹回放窗口,并将终端ID和终端名称传递给轨迹回放窗口,在该窗口中,首先要选择轨迹回放的时间段点击下载后会从数据库中下载该终端的对应时间段内历史经过的地理位置和经过各个位置时的速度和时间。如果选择的时间段内有历史轨迹数据,则初始化轨迹回放地图,并定时依次地按时间顺序来将查询出来的地理位置信息、速度信息、时间信息作为参数传递到轨迹回放地图的JAVASCRIPT函数中,以便在地图上将这些信息作为轨迹回放标注的标题来显示出来。轨迹回放播放完后可选择重新播放或重新选择时间段下载或关闭。轨迹回放的活动图如图 5.18所示。

5.4.2.3 数据分析

当用户点击“数据分析”按钮时,弹出数据分析的窗口。

在数据分析窗口中,主要有三个控件:MSCAHR控件、车辆-终端列表、超速列表,其中MSCHAR控件用于绘制速度曲线,车辆-终端列表用于显示用户有权限管理的车辆与终端对应关系的列表,超速列表显示的是某车辆在某个时间段内的超速信息,双击超速信息列表自动跳转到地图并在地图上显示选中超速信息的轨迹。当车辆-终端的选项发生改变时,获取当前选中的项的终端编码并从数据库内查询到对应的时间段内的速度信息, 将这些速度信息在MSCHART中显示出来,同时根据速度阀值来求出所有的超速区域段并在超速列表中显示出来。数据分析的活动图如图5.19所示。

5.4.3 地图编辑

地图编辑是主要是对地图搜索、标注、路线、区域进行管理和将区域分配到终端车辆。在本功能模块中,提供新增标注、路线或区域的方法有两种,一是通过地图编辑窗口的新增按钮,另一是在浏览器地图上右键选择对应功能即可。

5.4.3.1 新增标注

当用户在窗口或地图右键菜单中点击“新增标注”后,如果是在窗口中点击“新增标注,标注的默认位置为地图当前的中心,如果是在地图的右键菜单中点击“新增标注”,则将标注的默认位置设置为右键事件发生的位置,然后在该位置弹出新增标注的信息窗,输入标注信息后点击保存,JAVASCRIPT的函数首先获取用户输入的标注信息,再调用MFC的函数将标注信息保存到数据库中。

5.4.3.2 新增路线

当用户在窗口或地图右键菜单中点击“添加路线”后,地图会进入绘图模式,并在JAVASCRIPT的路线模块中新建一条路线,在地图上点击任何一点都会将该点添加到该新建路线的折点中,在地图右键菜单中点击结束绘制时会在地图上最后的一个点击点处弹出编辑路线的信息窗,点击“保存”后JAVASCRIPT的函数获取路线的名称和ID并调用MFC的函数来在数据库的用户-路线表中新增一条记录,然后再循环遍历路线的折点并调用MFC函数将折点的地理位置保存到数据库中。

5.4.3.3 新增区域

当用户在窗口或地图右键菜单中点击“添加区域”后,地图会进入绘图模式,并在JAVASCRIPT的路线模块中新建一条路线,在地图上点击任何一点都会将该点添加到该新建路线的折点中,在地图右键菜单中点击结束绘制时,会将该新建的路线闭合成一个区域,并在地图上最后点击处弹出区域编辑信息窗,点击“保存”后先调用MFC函数在数据库的用户-区域表中新建一条区域记录,然后再在JAVASCRIPT中用函数顺序循环获取区域各个角的地理位置并调用MFC函数将这些地理位置信息保存到数据库中。

5.4.3.4 给车辆终端分配区域

在地图编辑窗口中,有三个列表,一个是列表数据库中所有区域,一个是列表当前登录用户有权限管理的所有车辆终端,一个是列表当前车辆终端列表中选中的项对应的进报警区域或出报警区域。当要给某车辆终端添加报警区域时,先获取当前车辆终端列表中被选中的车辆,然后判断当前报警区域列表的模式是进报警区域还是出报警区域,再依次获取区域列表中被选中的区域,判断选中的区域是否已经在对应车辆的进(出)报警区域当中,如果不在,添加进去,如果已经在,继续区域区域列表中被选中的项并进行同样的动作,直到获取完为止。

6 系统测试

6.1 测试目的

软件测试的目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。

明确测试的目的是一件非常重要的事,因为在现实世界中对测试工作存在着许多模糊或者错误的看法,这些看法严重影响着测试工作的顺利进行。因此,在测试的过程中,不仅是本作者对系统进行测试,还邀请相关同学测试炎光高校团购网系统,并利用宿舍局域网以本人主机为服务器,让其他同学访问测试本系统。

在测试和调试应用程序后,系统应达到以下要求:

  • 运行不会导致崩溃或产生错误信息

  • 在一般情况下操作正常

  • 在一定范围内,操作合理,或能提供适当的错误信息

6.2 开发与测试环境

本系统的开发及运行环境如下:

  • 硬件平台

    • CPU: Intel® Pentium® M processor 1.86GHz

    • 内存:1G

  • 软件平台

    • 操作系统:WindowsXP SP3

    • 数据库:MS Sql

    • 浏览器:IE6.0

6.3 测试计划

基于电子地图和GPS 的车辆信息管理系统在开发过程的各个阶段都安排有相应的测试,主要是为了及早发现系统模块中的错误,尽快解决问题,损失降到最小。炎光高校团购网系统的开发过程的各个阶段都有相应的测试,为了及早发现系统模块中的错误,尽快解决问题,损失降到最小。在本系统的测试过程中,全面地测试了系统各部分,使用了数据测试、操作测试、确认测试及系统测试。

  • 数据测试:即用大量实际数据进行测试,不仅输入了大量的合法数据,还有很多非法的数据,以及各种“边值”、“端点”特殊数据项,对系统模块进行数据测试

  • 操作测试:即从操作到各种显示、输出做全面检查,对系统各个模块操作多次,确认其与系统设计要求是否相一致

  • 确认测试:即黑盒测试,测试人员不管程序内部是如何编制的,对模块进行测试。这样正符合用户不懂程序编写,只根据功能使用的现实来进行测试

  • 系统测试:即对系统进行综合测试,不仅是系统本身,还有软/硬件环境和网络环境的性能要求是否符合实际情况

表6-1列举了系统主要模块的测试报告。

模块 预计测试功能 输入/输出功能 造成差别原因
登录 注册时,有信息有效性验证;登陆时,跟数据库用户名、密码一致。 与预期一致
车辆管理测试 对车辆资料、终端资料正确进行增删改查,正常派收车 与预期一致
权限管理 正确赋予权限,并能根据权限来决定各种操作 与预期一致
地图 正确显示地图和地图上的标注、路线和区域 与预期一致
数据分析 正确在控件上显示速度曲线,列表超速信息 曲线显示不完全正确 X时间轴的划分不正确
轨迹回放 根据下载的内容在地图上依次回放车辆所经过的历史位置 与预期一致
动态跟踪 定时获取车辆的实时位置信息并在地图上呈现 与预期一致

6.4 测试过程

开发后期为了保证系统的正确性,对本系统做了大量的测试,比如操作测试、数据测试、确认测试、系统测试等,下面只提供了确认测试的过程,因为确认测试的正确性能够更好的说明系统是否能够正确地完成系统应该完成的功能。

6.4.1 登录模块的测试]

登录模块主要测试系统用户能否正确登入系统和提供错误的用户名或密码的时候还能不能登入到系统。错误的用户名或密码测试过程如图 6.1 所示。

正确的用户名和密码测试过程如图6.2 所示。

6.4.2 地图模块的测试

地图模块的测试主要是测试地图能否正确地在地图上显示和新增标注、路线和区域,该模块的测试过程如图 6.3 所示。

6.4.3 轨迹回放模块的测试

对轨迹回放主要进行的测试有对于所选的时间段的轨迹记录进行正确的回放,测试过程如图 6.4 所示。

6.4.4 动态跟踪模块的测试

动态跟踪模块的测试主要是测试该功能模块是否能对特定的车辆进行实时性的跟踪,在该模块的测试过程中通过改变某特定车辆的位置信息进行改变来达到效果,如图 6.5 所示。

6.4.5 数据分析模块的测试

数据分析模块的测试主要是测试能否对某个特定的车辆的速度信息进行分析,比如能否正确绘制出速度曲线和计算出超速信息,该模块的测试过程如图 6.6 所示。



6.5 测试结论

在测试过程中,通过模块测试、性能测试、安全性测试,检查出系统在某些功能上设计不够完善,导致了一些问题的出现,通过对这些问题的分析与排查,并经过修改与检验后,所具有的功能模块基本能正常工作,无明显的错误;在性能上的测试表明使用系统时各种操作都无明显的延时;在安全性上,前台的安全设置能够保证系统的非法登录。总体看来,本系统的稳定性和安全性都能够得到保障。整个系统的设计和实现已达到了预期要求。

7 出错处理设计

7.1 出错输出信息

出错输出信息表如7.1所示。

序号 错误 输出信息
1 用户名或密码错误 提示用户名或密码错误
2 数据长度小于设定值 长度小于
3 数据不在设定范围内 的值不在和之间
4 数据未输入 必须输入
5 数据库无法连接 服务器连接失败
6 起始时间小于终止时间 提示用户终止时间应大于等于起始时间
7 设置密码两次输入不一致 提示用户两次输入不一致,重新输入
8 地图载入失败 提示地图载入失败,是否连上互联网

7.2 出错处理对策

出错处理对策表如7.2所示。

序号 错误 处理对策
1 用户名或密码错误 停在登录界面,不进行下一步操作
2 数据长度小于设定值 停在录入界面,不进行下一步操作
3 数据不在设定范围内 停在录入界面,不进行下一步操作
4 数据未输入 停在录入界面,不进行下一步操作
5 数据库无法连接 提供用户手动重试的功能
6 起始时间小于终止时间 停在录入界面,不进行下一步操作
7 设置密码两次输入不一致 停在录入界面,不进行下一步操作
8 地图载入失败 提供用户手动刷新的功能

8 安全保密设计

  • 进行系统的唯一方法是拥有一个能登录系统的用户账号

  • 输入密码时在界面上显示为******

  • 关键性的操作(比如删除)都会提示用户是否确认

  • 存放在数据库的密码必须是加密后的密文

  • 进行系统的系统用户只能执行系统管理员分配给他的功能

  • 尽力提高系统的鲁棒性、避免因用户的疏忽对系统造成损害

  • 对于有些需要限制长度的字段要限制用户输入的长度;避免保存失败

  • 用户的一些数据是保密的并且其他用户不能管理和查阅

结 论

经过了几个月来的学习和努力,在指导老师的帮助下,我终于完成了基于电子地图和GPS的车辆信息管理的系统和毕业论文。从开始确定开发一直到系统实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战。我很享受这其中的过程,因为在这当中我学到的东西让我受益终身,这次经历是我一辈子都不会忘记的珍贵回忆,并且对我今后的发展,可能也有着深远的影响。

在完成基于电子地图和GPS的车辆信息管理系统之后,现在回顾起来,感触颇多,在这过程当中,固然遇到了不少的难题和挫折,也有不少酸甜苦辣的感受,这其中的“人生百味”是难以用文字来表达,但这其中的经历,也让我学到了许许多多的平时生活没没办法学到的东西,受用一辈子。有时对于折腾了好却仍无法解决的问题感到非常的灰心,有时因受到了挫折而倍感沮丧想要放弃,但庆幸的是每次在我想要放弃的时候我都说服了我自己:只要我坚持下去,我就能解决它,我一定会解决它!也就是我的执着和坚持和指导老师的悉心帮助,我克服了一个又一个的困难,一点点地提高我了自己的能力水平,一步一步的向前走来,一直坚持到了最后。每次向前走一步都是一次自我提高的过程,每一次进步,都让我充满自信和斗志,这也是我不断进取的动力,也更让我相信只有努力进取,才能让自己变得更强大;只有不放弃,才能达到自己的目标。

基于电子地图和GPS的车辆信息系统已经在我手下顺利完成,但其中还是有些许可以改进或者必须改进的地方,比如有些地方还可以做得更好,有些地方的实现方法不正确导致系统还隐藏存在有一些的问题等等。虽然现在系统有这些真正存在的问题,但我依然可以自豪的说:这是我的作品,这里面的每一段代码、每一个功能实现都有我的辛勤劳动,都是我亲手去做的,就是现在发现的每一个问题,都是我自己找出来的。看着自己做的系统达到预期目的并且自己的辛勤付出得到了收获是一件很快乐的事情,我非常享受这其中的过程。

参考文献

[1] David Lane著Windows Via C/C++ ; 清华大学出版社2010

[2] anthony janes,jim ohlund编著NETWORK PROGRAMING FOR MICROSOFT WINDOWS清华大学出版社,2002

[3] Windows网络编程技术.胡鸣编科学出版社,2008

[4] Windows网络编程 黄超 编著 人民邮电出版社 2002

[5] 轻松掌握用-用VISUAL C++6对数据库编程 lynRobison 编著 电子工业出版社 2007

[6] 许家珆主编.软件工程:方法与实践[M].北京:电子工业出版社,2007

[7] 王珊 萨师煊编著.数据库系统概论[M].北京:高等教育出版社,2006.

[8] (英)BobHughes,(英)MikeCotterell著;软件项目管理[M].北京:机械工业出版社

[9] (美) JeffreyRichter著; windows核心编程[M]第五版.北京:清华大学出版社

[10] (谭浩强 著;C语言程序设计(第三版)[M].北京:清华大学出版社,2005.7

上传的附件 cloud_download 基于SOGOU电子地图和GPS定位的车辆管理系统VC++实现.7z ( 5.76mb, 13次下载 )
error_outline 下载需要12点积分

发送私信

童心未泯,是一件值得骄傲的事情

29
文章数
19
评论数
最近文章
eject