资源描述
摘 要近年来,随着监狱在押人员的不断上升,仅依靠传统的视频监控或门禁报警系统已显得独木难支,不能做到全方位、多功能的监控。因此 ,提高看守所安防管理水平,建立综合高效的信息监管平台已成必然趋势。本课题研究的主要容是设计一个无线人员定位管理软件,此软件具有对看守所在押人员的基本信息的增加、查询、删除、修改,人员路径再现以及用户管理等功能。本软件以流行的Java语言为开发语言,以开源的Eclipse为开发开台,以免费的MySQL作为后台开发数据库,并利用引路蜂地图开发包实现人员定位功能的一个跨平台的人员管理系统。本文首先对Java程序编程的基础知识,JDBC数据库技术,图形界面开发技术,引路蜂地图开发包等软件开发的相关技术做出了简单的介绍。在此基础之上,介绍了本课题的创新点,给出了软件的总体设计方案和各功能模块的实现。关键词:无线定位;Java;引路蜂;JDBC;Eclipse;跨平台AbstractIn recent years, with the number of prisoners on the rise, we can not only relay on the traditional video surveillance or access control alarm system for they cannot do the all-round, multi-functionmonitoring.Therefore, it has become an inevitable trend to establish a comprehensive and efficient monitoring platform to improve the detention center security management level.The main content of this research project is to design a wirelesspositioning management software. The software has the function of add, query, delete, modify and export the basic information held in detention center. Whats more, it also has user account management function. The cross-platform personnel management system is a software that uses Java as a developlanguage,the open source Eclipse as Integrated Development Environment, the free MySQL as development database, and the Guidebee Map Development Kit for positioning .First I make a brief introduction to Java programming, the JDBC database technology, Graphical User Interface programing, and Guidebee Map development technology. On this basis, I give the overall design of the software and the design of each functional module.Key words:wireless positing;Java; Guidebee Map; JDBC; Eclipse; cross-platform目 录摘要Abstract第1章绪论11.1 课题意义及目的11.2 课题主要研究的容1第2章软件开发相关技术介绍32.1 Java程序编程基础32.1.1 Java的起源及其发展32.1.2 Java程序运行原理32.2 Eclipse开发平台52.3数据库技术62.2.1 SQL语言概述62.2.2 JDBC模型72.2.3 JDBC的工作方式82.2.4 MySQL数据库102.4图形界面开发技术102.4.1 Swing组件类的层次112.4.2 Swing事件处理机制132.4.3 Swing中的布局管理132.4.4 设置应用程序外观162.5引路蜂电子地图开发技术172.5.1引路蜂地图API概述172.5.2地图开发包类的定义182.5.3地图对象类的层次关系202.5.4地图图片读取类层次关系212.5.5图形子系统222.5.6地图配置24第3章系统总体设计253.1系统功能描述253.2软件总体设计263.2.1 软件总体结构图263.2.2系统开发原则263.3系统的通信协议27第4章软件各模块的实现284.1用户登录的设计284.2在押人员管理模块设计284.2.1查询在押人员信息模块294.2.2新增在押人员信息模块304.3.3修改在押人员基本信息模块304.3.4删除在押人员信息模块314.3.5导出在押人员信息模块324.2.6显示在押人员路径模块324.3用户管理模块设计334.3.1增加模块344.3.2删除模块344.3.3修改密码模块354.4数据库中表的设计354.5本章小结38第5章项目创新点395.1 软件的平台无关性395.2 基于桌面系统的Java地图应用395.3 采用最新的地图显示技术39第6章结束语40参考文献41致4241 / 47第1章 绪论1.1 课题意义及目的近年来,虽然监控技术高速发展,但看守所中在押人员的狡诈意识也逐渐增强,犯罪种类有增无减,常常出现聚众斗殴、自残、逃跑等现象,因此,提高看守所安防管理水平,建立综合高效的信息监管平台已成必然趋势1。目前,已有的安防系统大都只能实现对定点人群的定位,无法对移动人群进行定位,因此对于出逃在外的在押人员,监管人员无法判断其出逃方向,更无法获得其出逃路线,不利于高效地追捕。因此,设计一套无线人员定位管理系统,可以解决移动人群的追踪定位问题,具有广泛的社会需求和广阔的市场前景。在信息技术不断发展的今天,利用无线人员定位管理系统,能够有效地监控高危在押人员,防止在押人员的出逃,追查及跟进暴力事件的发生,最大限度的保障监管人员和在押人员的人身安全,并促进监狱安全技术防系统向集成化、网络化、智能化的进一步发展,具有一定的创新意义及实用价值。1.2 课题主要研究的容本课题以 Windows XP为开发平台,以Java为开发语言,以Eclipse作为集成开发工具,MySQL作为后台开发数据库。本文从上位机软件出发,利用面向对象、数据库、Swing、多线程等技术,采用引路蜂的J2SE地图开发包,设计并实现无线人员定位管理系统软件。此软件具有看守所在押人员的基本信息阅览、新增、查询、删除、修改,人员路径再现以及用户管理的功能。通过这个软件查看每个在押人员的基本信息,并进行修改,并且可以结合引路蜂地图,查看在押人员的行进路线。为了提升系统的安全性,所有用户只有在登录后才可以使用本系统。同时,为了方便不同的人员对在押人员进行管理,软件中设置了管理的功能。本论文的主要研究容如下:学习和掌握Java编程语言、Eclipse开发平台、JDBC数据库技术、Swing应用程序开发包和引路蜂地图开发包的使用。分析整个无线定位管理软件系统的总体框架及其功能特点。根据用户需求设计出无线定位管理软件系统,给管理人员提供可视化界面,实现对看守所在押人员的基本信息的阅览、新增、查询、删除、修改,人员路径再现等功能。对软件进行现场测试,以验证设计的可行性、准确性和优越性。第2章 软件开发相关技术介绍2.1 Java程序编程基础2.1.1 Java的起源及其发展Java是Sun公司开发出来的一套编程语言,最早来源于一个叫Green的项目。这个项目原来的目的是为家用电子消费产品开发一个分布式的代码系统,这样就可以通过网络对家用电器进行控制。开始Sun公司的工程师准备采用C+2,但由于C+过于复杂,安全性差,最后决定基于C+开发一种新语言Oak语言。Oak是一种用于网络 ,精巧而安全的语言,Sun公司曾以此投标过一个交互式电视项目,结果被SGI打败。恰巧此时Mark Andreessen开发的Mosaic和Netscape启发了Oak的成员,Sun的工程师们用Java编制了HotJava浏览器,触发了Sun进军Internet3。Java语言发展到至今经历了一系列的过程,Java在1995年5月23日推出了JDK 1.0版本,此版本标志着Java正式进军Internet的开始。在1998年,Sun公司推出了JDK 1.2开发包,该版本加入了大量的轻量级组件,从此以后Java正式被命名为JDK 2。在此之后,Sun公司也陆续发布了一系列的Java开发包版本,目前最新版本的JDK为JDK 74。2.1.2 Java程序运行原理Java中有两类应用程序,一类是有自己独立运行入口点的Java应用程序,另一类是嵌入在Web页面中由Web浏览器来控制运行的Java小程序Applet5。在运行时,它们都需要Java运行系统的支持,对于Java运行程序,Java运行系统一般是指Java解析器;而对于Applet, Java运行系统一般是指运行Applet的与Java相兼容的Web浏览器,并且其中包含了支持Applet运行的环境。Java运行系统的功能是对字节码进行解析和执行,其工作过程可以分为以下三步。1由类装载器完成字节码的装载。在装载过程中,程序运行时所需要的所有代码都被装载。完成后,节节码中便保留了地址的符号引用信息,运行系统通过建立的地址符号引用信息与存之间的对照来确定程序的存分配。2由字节码检验器对字节码进行安全性检查。这种检查可以排除字节码中可能存在的违反访问权限,不规数据类型以及非法调用等问题。3字节码的翻译和执行。Java字节码的运行可能有两种方式,一种是通过代码生成器,先将字节码翻译成适用于本系统的机器码,然后再送到硬件去执行,这是一种编译性工作方式。另一种是通过解析器将字节码翻译成机器码,然后由即时运行部件将机器码送到硬件去执行,这是一种解析性工作方式。Java运行系统一般采用第二种工作方式,只有对那些运行速度要求较高,才采用编译性工作方式,这时就需要使用特定的代码生成器来完成编译,从而保证Java程序代码的高性能6。2.2 Eclipse开发平台Eclipse是一个开放源代码的,基于Java的可扩展开发平台,它通过插件组件构成开发环境。Eclipse附带了一个标准的插件集,其中最著名的插件当属Java开发工具Java Development Tools,JDT7,其界面的主界面如图2-1所示。最初主要用来Java语言开发,但是目前亦有人通过外挂程式使其作为其他计算机语言比如C+和Python的开发工具。Eclipse本身只是一个框架平台,但是众多外挂程式的支持使得Eclipse拥有其他功能相对固定的IDE软体很难具有的灵活性。许多软体开发商以Eclipse为框架开发自己的IDE。Eclipse最初由IBM公司开发,20XX11月贡献给开源社区,现在它由非营利软体供应商联盟Eclipse基金会Eclipse Foundation管理8。 图2-1 Eclipse程序主界面在用最新版本的Eclipse开发桌面应用程序时,既可以直接编写代码来设计应用程序界面,也可以使用Eclipse的Visual Swing Designer来进行界面的可视化设计。Visual Swing Designer是一个Swing界面设计工具插件 ,代码的生成和解析不需要依赖于form文件,而且生成的代码可读性很好,支持代码跟界面实时的切换。它还支持表格和树的可视化设计,程序员在设计表格和树模型时,不需要编写复杂的代码,直接从采用界面操作便可以生成表格和树的数据模型代码。在一般情况下,可以通过Visual Swing Designer来设计程序的基本界面,再通过用户定制一些代码往往能更快地进行应用程序的快速开发。Eclipse的使用大大减少了程序员开发程序的工作量,尤其是在程序界面设计方面。同时拥有对代码错误信息的实时提示功能,当程序代码出现错误时,Eclipse会在代码左边显示出错误提示,点击它能够帮助程序员自动更正错误。2.3数据库技术程序设计中离不开数据库的支持,每个程序的设计都是使用数据库保存数据。 JDBC是Java程序连接和存取数据库的应用程序接口,是Java核心API的一部分。JDBC使程序员能够利用当前最新的数据库特征,如同时连接多个数据库等。JDBC支持静态和动态的SQL语句在运行时组建查询和更新语句。JDBC最大的特点是无论后台是何种数据库,对于Java程序员而言,它的工作方式完全相同。JDBC为许多不同的数据库连接模块的前端提供了统一的接口,这样就不用为连接不同的数据库而烦恼了。当需要为程序修改数据库时,程序基本上只要修改在代码中修改数据库的驱动,URL,用户名,密码,其他的地方基本上是没有发生变化的。2.3.1 SQL语言概述SQL,是一个功能强大的数据库语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通9。20世纪80年代初,美国国家标准局ANSI开始着手定制SQL标准,最早的ANSI标准于1986年完成,叫做SQL-86。标准的出台使SQL作为标准关系数据库语言的地位得到了加强。SQL标准目前已几经修改,更趋完善。正是由于SQL语言的标准化,所以大多数关系型数据库都支持SQL语言,它已经发展成为多种平台进行交互操作的底层会话语言。SQL语句主要可以划分为以下3个类别。1DDL语句:数据定义语言,这些语句定义了不同的数据段、数据库、表列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop等。2DML语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。3DCLData Control Language语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。2.3.2 JDBC模型JDBC由 编 程 语 言 编 写 的 类 及 接 口 组 成,同时它也为程序开发人员提供了一组用于实现对数据库访问的API,并支持SQL语言。利用JDBC可以将Java代码连接到Oracle,SQL Server,MySQL等数据库,从而实现对数据库中数据的相关操作10。JDBC 为数据库应用开发人员和数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯 Java 语言编写完整的数据库应用程序 用 JDBC 写的程序能够自动地将 SQL 语句传送给相应的数据库管理系统。不但如此,使用 Java 编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用程序11。JDBC由两层组成,上面一层是JDBC API,下面一层是JDBC驱动程序API。JDBC API负责与JDBC管理器驱动程序API进行通信,将各个不同的SQL语句发送给它。驱动程序管理器与实际连接到数据库的第三方驱动程序进行通信,并且返回查询的信息,或者执行由查询规定的操作12。它主要由以下四个部分组成。Java程序Java程序包括应用程序,Applet和Servlet等,这些类型的程序都可以利用JDBC方法完成对数据库的访问和操作。完成的主要任务有:请求与数据库建立连接、向数据库发送SQL请求,为结果集定义存储应用和数据类型、查询结果、处理错误、递交及关闭等操作。2JDBC驱动程序管理器JDBC驱动管理器能够动态地管理和维护数据库查询所需要的所有厂商或第三方所提供的驱动程序对象,实现Java任务与特定驱动程序的连接,从而体现JDBC与驱动无关这一特点。它完成的任务有为:为特定的数据库选择驱动程序,处理JDBC初始化调用,为每个驱动程序提供JDBC功能的入口,为JDBC调用执行参数。驱动程序驱动程序一般由数据库厂商或者第三方提供,它由JDBC方法调用,向特定的数据库发送SQL请求,并为Java程序取得结果。驱动程序可以完成下列任务:建立与数据库的连接,向数据库发送请求等。数据库数据库是指Java程序所需要的数据库,如MySQL,SQL Server,Oracle。在本课题中,使用了MySQL数据库。2.3.3 JDBC的工作方式JDBC功能强大非常强大,但使用简单。无论连接何种数据库,只要做好下列步骤即可:1与数据源建立连接 通过DriverManager类建立与数据库的连接,这个连接将作为一个数据操作的起点。例如,在本程序中,使用以下语句与MySQL数据库建立了连接。protected static String dbClassName = org.gjt.mm.mysql.Driver;/ 数据库连接驱动类protected static String dbUrl = jdbc:mysql:/localhost:3306/gps;/ 数据库连接URLprotected static String dbUser = root; / 数据库用户名protected static String dbPwd = admin; / 数据库密码private static Connection conn = null; / 数据库连接对象Class.forName; / 加载驱动类conn = DriverManager.getConnection;/ 与数据库建立一个连接2向数据库发送SQL命令通过Statement或者PreparedStatement类发送SQL命令。在命令发送后,调用类中的excute方法来执行结果。例如,下列语句将会执行sql语句指定的操作。Statement stmt=conn. createStatement ;/通过SQL语句创建Statementstmt.execte;/执行sql语句指定的操作3处理数据源返回的结果数据库处理了SQL命令后,将返回处理结果。对于查询将会返回一个ResultSet结果集,在Java程序中遍历这个结果集就可以执行想要的操作了。例如,下列语句则会从数据库的tb_operator表中返回具有指定用户名和密码的查询结果,并存放在ResultSet中。String sql = select * from tb_operator where name= + name+ and password= + password + ;/查询字符串ResultSet rs = Dao.executeQuery;/ 执行查询2.3.4 MySQL数据库近几年来,开源数据库逐渐流行起来。由于具有免费使用、配置简单、稳定性能好、性能优良等优点,开源数据库在中低端应用中占据了很大的市场人人份额,而MySQL正是开源数据库的杰出代表。MySQL13-14数据库隶属于MySQL AB公司,总部位于瑞典。MySQL几乎支持所有的操作系统,并且支持很大的表,这些特性使得MySQL的发展非常迅猛,目前已经广泛应用在各个行业中。MySQL数据库目前分为社区版Community Server和企业版Enterprise,它们最重要的区别在于:社区版是自由下载而且完全免费的,但是官方不提供任何技术支持,适用于大多数普通用户;企业版是收费的,不能在线下载,相应地,它提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求比较高的企业客户。在本程序中,使用了MySQL数据库的社区版来对程序中相关的人员信息进行维护。2.4 图形界面开发技术Swing15是一个用于开发Java图形界面应用程序的开发工具包,它是以抽象窗口工具包AWT16为基础,使跨平台应用程序可以使用任何的外观风格。Swing开发人员通过使用少量的代码,就可以利用Swing包中丰富、灵活的功能和模块化组件类来开发令人满意的用户界面。Swing是Sun公司推出的第二代图形用户接口工具包,通过Swing可以开发出功能强大,界面优美的客户应用程序。Swing中不但提供了许多功能完善的控件,而且还有良好的扩展能力。Swing组件实现不包括任何与平台相关的代码。Swing组件是纯Java语言编写,没有本地代码,是一种轻量级组件17。目前利用 Swing 开发的可视化桌面程序已经非常成熟,并且很多工具已经在业界产生了巨大影响。例如 IBM Lotus notes 办公套件, Eclipse和NetBeans 开发工具。其中这 Eclipse 和 NetBeans 是用来开发 Java 应用程序的,本来也是使用 Swing 开发出来的一套工具,在全世界普及。近年来,NetBeans的发展,已经在程序员中产生了良好的口碑,特别是它的可视化桌面程序设计器,拖拽方式设计桌面窗口,以及各种各样良好的辅助设计功能,让之前可视化拖拽设计工具 Delphi 的设计人员也大大赞赏。特别是 Swing 设计的桌面程序,在不同平台几乎不需要做什么修改就可以直接使用,让目前的软件厂商找到了非常好的跨平台编程工具18。2.4.1 Swing组件类的层次Swing中的组件的层次结构如图2-2所示,Swing的组件可以分为两种类型,一种是JComponent类,另一种是Window类。其中Window组件类主要包括了一些可以独立显示的组件,而JComponent组件类主要包括了一些不能独立显示的组件。什么是可以独立显示的组件呢?独立显示的组件是指当运行一个程序时,这个组件无须托付在其他组件上就可以显示,即它可以直接显示出来,例如JFrame类,它可以独立显示,无须任何其他的组件。而不可独立显示的组件则必须依靠可独立显示的组件来显示,例如文本框组件、按钮组件、必须依托在JFrame等上面才能显示出来。ComponentContainerJComponentWindowJPanelJTableJTreeJTextFielduttonJTextFieldJFrameJDialog图2-2 Swing组件类的层次结构图以上的示意图只是从显示效果上划分,其实从其功能上划分,在javax.swing包中Swing组件共有三种类型:顶层组件、中间组件、基本组件。顶层组件又被称为顶层容器,而中间组件又分为中间容器和特殊中间组件,如图2-3所示。Swing组件顶层组件类中间组件类基本组件类中间容器类特殊中间容器类图2-3 Swing 组件从功能上划分顶层组件类:所谓的顶层组件类是指可以独立显示的组件。主要有JFrame,JApplet,JDialog,JWindow等。中间容器类:所谓的中间容器类是指那些可以充当载体,但也是不可以独立显示的组件。通俗地说,就是一些基本控件可以放在其中,但是它不能独立显示,必须依托在顶层容器上才能显示。常用的中间容器有JPanel,JScrollPane,JSplitPane,JToolBar.特殊中间组件类:在GUI上起特殊作用的中间层,如JInternalFrame。基本组件类:基本组件是指那些只能依托在中间窗口上才能被显示的组件,如utton,JComboBox,JMenu等。2.4.2 Swing事件处理机制图形用户界面程序都需要对环境中发生的各种事件包括鼠标的单击、值的改变、焦点的获取或者丢失、键盘输入等 进行监控并根据事件的类型进行相应的处理。Swing中采用了委托事件模型,也叫授权事件模型来处理系统发生的各类事件19。在授权事件模型中,主要包含3个对象。事件:发生在用户界面上的用户交互行为所产生的一种效果。事件源:产生事件的对象。事件监听器:接收事件并对其进行处理的对象。组件作为事件源可以触发事件,一个事件源可以注册一个或多个事件监听器。当特定事件发生时,事件被委托到特定的事件监听器进行处理。具体来说,首先通过组件的AddListener方法注册事件监听器,一个组件可以注册多个事件监听器。 监听器监听特定的事件,如果组件触发了相应类型的事件,此事件被传送给已经注册的监听器,事件监听器负责处理事件。委托事件模型具有如下优点:事件对象只传给注册的监听器,不会被其他组件或上层窗口捕获和处理。可以实现过滤的功能,只监听和处理感兴趣的事件。实现了将事件源和事件监听器分开处理的功能。2.4.3 Swing中的布局管理Java中的布局管理管理功能,没有Visual Basic, Visual C+等可视化软件所带的表单设计器,可以在画板上直接将组件按照程序员的意愿进行排列。在Java中只能通过编写代码来规每个控件在顶层窗口中的位置。不同的代码代表着不同的代码布局方式,不同的布局方式代表着不同的布局格调。为了将添加到容器中的Swing组件和其他容器进行布局,Swing采用了两种布局方式:无布局管理器布局和基于布局管理器的布局。其中无布局管理器的布局是通过指定Swing组件在窗体上的绝对位置来实现的。基于布局管理器的布局20是Swing为了实现跨平台的动态布局效果而提出的布局方式。在这种方式下,需要调用容器类JFrame,JDialog或者JPanel等的setLayout方法设置布局管理器,常用的布局管理器有FlowLayout,BorderLayout,GridLayout等多种方式。不同的布局管理器使用不同的算法和策略来决定组件在窗口的布局。设置好布局管理器后,窗口的所有组件的布局就由布局管理器来负责,包括组件的排列顺序,组件的大小,位置,当窗口移动或调整组件大小后该如何变化等。l 无布局管理器的布局Swing中提供了setLocation,setSize,setBounds等布局方法,但Swing中存在一个默认的布局管理器,因此这些方法都会失效。如果需要设置组件的大小或位置,则应取消布局管理器,方法为调用容器的setLayout方法,并将布局管理器设置为null。采用无布局管理对组件进行布局时,相对于基于布局管理器的布局方式在对组件的大小和位置的控制上较为灵活,但这种布局方法会导致平台相关,在不同的平台上可能产生不同的显示效果。如果想要使应用程序在不同的平台上运行,则需要采用基于布局管理器的布局方式。l FlowLayout容器采用FlowLayout布局其组件的放置规律是从左到右,从上到下进行设置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已经放置不下该组件,刚放到下一行的最左边。当容器的大小发生变化时,用FlowLayout管理的组件会发生变化,其变化规律是:组件的大小不变,但是相对位置会发生变化。l BorderLayoutBorderLayout布局管理器把容器分为五个区域:North,South,East,West,Center。每个区域只能放置一个组件。如果使用了BorderLayout布局,那么当容器的大小发生变化时,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则North、South区域不变,West、Center,East区域变高。如果窗口变宽了,则West和East不变,North、Center和South区域变宽。不一定所有的区域都有组件,如果四周的区域没有组件,则用Center去补充。l GridLayoutGridLayout 将组件按网格型排列,每个成员尽可能地占据网格的空间,每个网格也同样尽可能地占据空间,从而各个成员按一定的大小比例放置。如果你改变大小, GridLayout将相应地改变每个网格的大小,以使各个网格尽可能地大,占据Container容器全部的空间。GridLayout基本布局策略是把容器的空间划分成若干行乘以若干列的网格区域,组件就位于这些划分出来的小区域中,所有的区域大小一样。组件按从左到右,从上到下的方法加入。使用构造函数GridLayout可以创建具有指定行数和列数的网格布局。构造函数里的行数和列数能够有一个为零,但是不能都为零。当容器里增加控件时候,容器将向0的那个方向增长。例如,如果是如下语句:GridLayout layout= new GridLayout0,1;在增加控件时,会保持一个列的情况下,不断把行数增长。l 面板及容器的嵌套由于任何一种布局管理器的能力都很有限,所以在设计复杂布局时,通常采用容器嵌套的方式,即把组件添加到一个中间容器中,再把中间容器作为组件添加到另外一个容器中,从而实现复杂的布局。为实现这个功能,经常使用JPanel类,该类是JCompoent类的子类。JPanel类是一个通用的容器,既可以把它放入其他容器中,也可以把它放入其他容器和组件,因此这种窗口经常在构造复杂布局中作为中间容器,但它不能单独显示,需要放到JFrame等顶层容器中。使用面板容器作为中间容器构建图形用户界面的一般思想是:先将组件添加到面板上,然后将面板作为一个组件再添加到顶层容器中。如果要作用面板作为中间容器,首先需要创建面板对象,JPanel的构造方法如下:Public JPanel:创建一个面板对象,使用指定的布局管理器对旬layout设置面板的布局。Public JPanel;使用默认的布局管理器创建一个面板对象,面板的默认布局管理器是FlowLayout。也可以在创建面板对象后重新设置它的布局,方法是使用面板对象的setLayout方法。2.4.4 设置应用程序外观Java程序是跨平台的,为了使Java图形界面应用程序在不同系统下显示的外观完全一致,Java应用程序可以指定界面显示外观Look and Feel。图形界面程序外观包括Java外观Metal风格外观,Windows外观,CDE/Motif, Mac OS外观等。在程序中指定一种外观很方便,只要调用UIManager类的setFeelAndLook方法即可,该方法的参数是LookAndFeel类的实例或类名。例如:如果用当前平台的外观则可使用:UIManager.setLookAndFeelUIManager.getSystemLookAndFeelClassName;UIManager类的getSystemLookAndFeelClassName返回当前系统使用的外观类名。将该段代码放入应用程序main方法的开头就可以设置应用程序的外观。如果要指定跨平台的外面,即Java外观,可以使用下面的代码:UIManager.setLookAndFeelUIManager.getCrossPlatformLookAndFeelClassName;设置应用程序外观,还可以在setLookAndFeel方法的参数中指定外观类的名字,例如1使用Java外观UIManager.setLookAndFeel;2使用Windows外观UIManager.setLookAndFeel;3使用CDE/Motif外观UIManager.setLookAndFeel;4使用Mac OS外观,但只能用在Mac OS平台UIManager.setLookAndFeel;2.5 引路蜂电子地图开发技术2.5.1引路蜂地图API概述目前流行的电子地图应用中,主要基于Google地图、百度地图、高德地图等进行开发的。如果是基于Google Earth的应用程序,可以使用KML语言21来进行开发。如果是用来进行开发,一般采用Google Map API21来进行开发。Google Map API 是一种通过 JavaScript21 将 Google 地图嵌入到您的网页的 API。该 API 提供了大量实用工具用以处理地图,并通过各种服务向地图添加容,从而在上创建功能全面的地图应用程序。百度地图和高德地图提供的API提供的都是基于浏览器的网页地图,采用JavaScript语言进行开发。对于标准的Java语言它们没有提供相应的API。引路蜂地图开发包24提供了几乎对所有软件平台桌面和移动平台的支持,采用统一的接口使用包括Google地图,Bing地图在的多达20多种地图类型,并在同一地图中支持矢量地图,离线地图的显示。图2-4显示了引路蜂地图开发包所支持的开发平台,软件包以三个不同的开发包提供对各个平台的支持。图2-4 引路蜂地图开发包支持平台2.5.2地图开发包类的定义图2-5为引路蜂地图开发包中关键的几个类的定义及其关系图图2-5开发包关键类及其关系图AbstractGraphicsFactory,DigitalMapService,MapTileAbstractReader分别用于对不同平台用户界面,不同地图服务,不同地图图片的支持。引路蜂地图开发包在对地图图片和地图服务进行了抽象,其中地图图片主要用于显示地图图片,地图图片可以来源于三个方面:在线地图:可以连接包括Google地图,Bing地图等二十多种地图,并支持自定义地图。在本程序中,仅使用了在线地图。离线地图:可以读取本地地图包矢量地图:可以读取MapInfo格式的矢量地图。而地图服务是指地址查询,路径查询,本地查询等。引路蜂地图开发包支持谷歌地图服务,在中国也支持MapABC,Bing地图。而且地图服务也是可以扩展的。地图图片和地图服务两个部分相对独立,如我们可以在显示Bing地图的同时使用谷歌地图的服务,也可以在显示谷歌地图的时候使用Bing地图服务。引路蜂地图开发包是跨平台的,因为它对不同平台的地图开发包进行了抽象,在Gis.Drawing包中定义了IImage,IGraphics,IFont,AbstractGraphicsFactory抽象类和抽象接口。这样对于不同的平台,只要实现相应的接口,就可以使用同一个开发包。引路蜂地图开发包主要以Java和C#两种语言提供,尽管Java和C#是两种不同的语言,但开发包提供的两种语言的开发接口却非常类似。下表列出了引路蜂地图开发包所定义的类包。2.5.3地图对象类的层次关系图2-6 地图对象类的层次关系图图2-6显示了各个地图对象类及其关系。MapLayer定义了通用的地图操作,如设置地图的中心点,放大,缩小,移动,以及坐标变换从屏幕坐标到地图坐标或从地图坐标到屏幕坐标,它是所有地图类的基类。MapLayerContainer是一个集合类,它定义了一组MapLayer的集合及它们的上下层次关系,并且使这些MapLayer一些移动,放大,缩小等。DigitalMap定义了地图服务,如地址查询,路径查询,它包含了对不同地图服务的支持。 RasterMap定义了对在线地图,离线地图的支持,部支持多线程获取图片,并提供回调函数用于了解图片的下载进度等。VectorMap为RasterMap的一个子类,主要是提供类似MapInfo的适量地图的支持。矢量地图通过读取地图矢量数据并将其栅格化成图像显示。2.5.4地图图片读取类层次关系图2-7 地图图片读取类层次关系不管是在线地图,离线地图还是矢量地图,对于RasterMap来说都是一256256的图像,在线地图是从服务器上下载图片,离线地图是从本地图片包中读取,而矢量地图是将矢量数据栅格化处理。如图2-7所示,RasterMap类有一个MapTileDownloadManager实例,这个对象用于管理所用地图图片的下载,读取线程。这些线程都是MapTileAbstractReader的子类,MapTileDownloader用于在线下载地图图片,而VectorMapRender用于栅格化矢量地图数据。大部分商用的地图服务器都采用了类似的地图分片方法,将地图分为1-17级,每图片都是大小为256个像素的正方形图片。图2-8显示了从一级到三级的地图分级方法 。图2-8 地图分级图2.5.5图形子系统如前文所述,引路蜂地图开发包中Gis.Drawing类定义了几个抽象类或接口,对不同平台的图形系统进行了抽象。通过抽象处理,引路蜂地图开发包就直接调用平台相关的图形类方法。Gis.Drawing定义了地图开发包中所需要的最小功能集,如果在开发过程中不需要矢量图,则可以将与矢量图形相关的方法设置为空。在Gis.Drawing包中抽象类AbstractGraphicsFactory,接口IGraphics,IFont,IImage。抽象类AbstractGraphicsFactory是抽象图形类工厂,主要用于创建新的图像对象。以Java为例,它定义的方法如下表2-1所示。表2-1AbstractGraphicsFactory类中定义的方法接口IGraphics类中定义了一些用于图形绘制的方法。它定义的方法如表3-2所示。表2-2 IGraphics接口中定义的方法接口IFont中定义了字体,如果在应用中不使用矢量图,可以不实现该类。它定义的方法如表2-3所示。表2-3 IFont接口中定义的方法接口IImage中,定义了获取图片大小等一系列的方法。它定义的方法如表2-4所示。表2-4 IFont中定义的方法2.5.6地图配置地图配置主要是通过类MapConfiguration和SearchOption来设置。这里介绍最常用的几个配置。l 工作线程数引路蜂地图开发包允许用户配置同时工作的最大线程数,这些工作线程主要用于从地图服务器上下载图片,默认情况下工作线程数量为4。这是通过MapConfiguration.WORKER_THREAD_NUMBER来配置的。例如,下面的程序将工作线程数量设置为16。MapConfiguration.setParameter;l 使用缓存引路蜂地图开发包默认是使用缓存来提高地图的显示效率的,但是缓存的使用会占用一定的存空间,大小可以通过程序进行配置,默认大小为256K。如果设置的存比较小,最好将缓存进行关闭。对程序来说,存是足够的,因此,在程序中使用了缓存。缓存的大小是通过MapConfiguration.MAP_CACHE_SIZE_IN_BYTES来配置的,开启关闭缓存是通过MapConfiguration.IS_CACHE_ON来设置的。第3章 系统总体设计3.1系统功能描述本小组所要研究的对象是电子防脱逃装置,由电子腕带在押人员佩戴、手持机监管人员佩戴和专用管理软件本软件三部分组成。手持机监管人员佩戴和电子腕带在押人员佩戴分别安置有GPS25模块,手持机通过无线传感网络获取两点GPS位置坐标,进而进行距离计算,从而确定电子腕带同手持移动控制终端的距离,如距离超出警戒围则进行报警等操作。专用上位机监管软件可同手持机进行通讯,能够更新在押人员的基本信息和获得人员路径信息。基于上述工作机理,对研究容进行分解,包含以下三个部分:1、电子腕带设计电子腕带主要实现功能有如下几点:GPS位置信息获取、位置信息的无线传输、报警功能、防撬功能以及电量检测与充电等功能。2、手持机设计手持机主要实现功能有如下几点:GPS位置信息获取、无线组网获取电子腕带位置信息、实时时钟、电量检测与充电、人机界面、人员信息存储、事件记录、与专用管理软件通信等功能。3、无线人员定位管理软件本软件是Java为开发语言,以Eclipse为开发平台,采用MySQL作为开发数据库,再结合引路蜂地图开发包来完成的。它是一个集成了看守所在押人员的基本信息阅览、新增、查询、删除、修改以及人员路径再现的综合性系统。可以通过这个软件查看每个在押人员的基本信息,并进行修改等,并且可以引路蜂地图开发包,查看在押人员的行进路线。为了提升系统的安全性,所有用户只有在登录后才可以使用本系统。本软件包含的主要功能有:l 新增:出现新增在押人员基本信息窗口,手动录入相关信息。l 删除:删除表格中指定行的记录,同时MySQL中相应的记录也被删除。l 查询:按给定的条件查询出符合条件的在押人员基本信息,并显示在表格中。l 修改:出现在押人员基本信息修改窗口,修改其中的各信息。l 管理:包括增加,修改密码和删除等功能。l 人员定位:打开txt或csv文件,在地图上显示某一在押人员的路径。l 导出:导出在押人员的基本信息,以txt文件的形式保存到其他位置。l 关于:显示软件的基本信息。3.2软件总体设计3.2.1 软件总体结构图无线人员定位管理软件的总体结构图如图3-1所示。无线人员定位管理软件用户登录在押人员管理用户XX管理查询在押人员信息新增在押人员信息修改在押人员信息显示在押人员路径管理员登录操作员登录增加用户XX删除用户XX修改用户密码导出在押人员信息删除在押人员信息图 3-1软件总体结构图3.2.2系统开发原则在系统的开发中始终坚持结构化、标准化、模块化的设计原则,做到界面清晰、接口标准、技术先进、安全稳定和有效集成。有关应用软件开发将依据以下原则:1现代化的管理模式原则在系统设计时,既要看到当前现状,又要想到长远,对系统进行合理的、全面的功能设计,尽量考虑系统的今后发展,为系统的扩充留有充分的接口,尽量延长系统的生命周期。 应用当前最先进、最成熟的开发平台技术。采用名牌产品:采用Java编程语言,MySQL数据库管理系统和Window XP操作系统,提高系统的安全性与稳定性。3集成性原则本系统涉及到不同种类的数据,与其他应用软件的接口。为了保证系统能够协同性工作,保证系统数据能够畅通无阻,必须坚持系统集成性原则,采用国际标准,提供标准的系统、外接口。4可管理、易维护原则选择合理的软件体系结构和网络结构,提供功能强大而灵活的软件系统管理工具,使系统易于管理、易于维护、易于今后的扩充和升级。4操作简便、界面友好原则用户对应用软件的认识和使用是从界面开始的。因此应用软件界面设计好坏,直接关系到软件使用的方便性、友好性和易操作性。一个好的用户界面设计能帮助使用者更好的理解自己所作的工作,能减少工作疲劳,提供工作效率。3.3系统的通信协议本软件通过USB数据线与手持机进行连接,用户路径信息保存在csv文件或txt文件中。当管理员想要了解相应的在押人员的实时路径信息时,可以通过打开相应的在押人员的路径文件就可以在软件上实现人员的路径显示。第4章 软件各模块的实现4.1用户登录的设计用户登录模块分为两种情况,管理员登录和操作员登录。在程序第一次运行的时候,只有一个默认的管理员,没有操作员。如果想要增加新的操作员,首先必须以管理员登录,然后在登录后增加相应的操作员。软件中所有的信息都是保存在MySQL数据库的。设计界面如图4-1所示。 图4-1 用户登录模块界面设计用户登录模块的具体设计流程图如图4-2所示。用户登录窗口用户名和密码是否正确弹出登录错误信息进入程序主界面 返回 是图4-2 登录模块流程图4.2在押人员管理模块设计在押人员管理模块是本软件的核心部分,它由在押人员信息查询,新增在押人员信息,修改在押人员信息,在押人员中路径显示,在押人员信息导出共五个子模块组成。它实现了对看守所在押人员的基本信息增加、查询、删除、修改、导出以及人员路径再现的综合性系统。可以通过这个软件查看每个在押人员的基本信息,并进行修改等,并且可以引路蜂地图开发包,查看在押人员的行进路线。下面对在押人员管理的各个子模块作一个详细的介绍。4.2.1查询在押人员信息模块查询在押人员信息界面如图4-3所示。图4-3 查询在押人员信息界面本软件开发时采用了多文档界面,在用户登录系统后可以显示程序的主界面。程序在默认情况下所有的子窗口是关闭的。当用户按下基本操作菜单下的人员信息查询或者工具栏的人员信息查询按钮,就显示如上界面。在查询界面的左边是查询类型,查询条件以及相关人员的头像。当用户选择查询类型,并在其下的文本框中输入相应的查询容,并按下查询按钮就可以在查询界面的右边的表格中显示相关人员的信息。相关人员的信息在数据库中是按照其在数据库中原来的顺序列出的。当用户在查询结果的相应行单击时,就会在界面的左上角显示相应人员的头像。4.2.2新增在押人员信息模块新增在押人员信息的界面如图4-4所示。图4-4 新增在押人员基本信息界面用户可以在新增在押人员基本信
展开阅读全文