毕业设计(论文)PB公安标准检测系统_第1页
毕业设计(论文)PB公安标准检测系统_第2页
毕业设计(论文)PB公安标准检测系统_第3页
毕业设计(论文)PB公安标准检测系统_第4页
毕业设计(论文)PB公安标准检测系统_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、河北省高等教育自学考试毕业论文公安标准检测系统专业:计算机信息管理(本)作者:准考证号:指导教师: 是否拟申请学位:否联系电话:完成日期:2009年10月8日 摘 要随着“金盾工程”一期建设的不断完善及二期项目不逐渐立项,公安行业内各个警种基本都建立起了相应的管理系统,建立了部、省、市、县(区)的多级互联。随着公安信息化建设的不断发展,数据交换与集中成了系统建设的重要方面,但数据格式不统一、数据质量不高等因素的严重的影响了公安软件系统的发展。本系统就是在这种现实情况下开发的。论文共分六部分,第一章为引言,简要介绍系统开发的背景和必要性;第二章为系统分析部分,从现状分析、需求分析、系统部署、组织

2、结构、业务流程几个方面对系统的整理结构进行了分析。第三章为系统设计部分,主要包括系统的技术方案和功能模块设计两部分。第四章为数据库设计,介绍了本系统的数据结构设计情况。第五章为系统实现部分,介绍了本系统的几个重点、难点以及相应的解决方法,并从重要功能方面的脚本代码进行了详细阐述。在第六章我对本系统的开发以及对整个自考学习过程一个总结。关键字:管理信息系统 powerbuilder 公安标准目 录第1章引言1第2章系统分析22.1需求分析22.1.1标准库管理22.1.2灵活自动的标准检测22.1.3对检测结果进行有效处理32.1.4灵活的安装部署模式32.1.5软件及数据的安全达到要求32.1

3、.6灵活易用性32.1.7通过网络进行自动更新和动态监控32.2系统部署42.3组织结构42.4业务流程5第3章系统设计63.1技术方案63.2功能模块设计63.3数据库设计73.3.1数据库模型设计73.3.2数据字典10第4章系统实现184.1框架与界面设计184.2系统主要难点及其实现194.2.1连接多个数据库194.2.2枚举数据库中的数据结构234.3主窗体创建及程序搭建254.4菜单设计274.5数据窗口设计274.5.1列表数据窗口284.5.2form数据窗口294.6标准检测功能实现304.7系统管理功能344.7.1用户管理344.7.2用户授权354.7.3注册信息35

4、第5章结束语38参考文献39致 谢40第1章 引言公安系统内的软件应用及数据使用情况可以用图1-1来展现: 图1-1 公安信息化应用示意图从图1-1可以看出,随着业务的持续优化,数据越来越走向整合与利用,未来的数据应该是模型化的多维数据。就目前的情况看,公安的数据还是以警种内集中为主,还未形成大规模的跨警种数据整合,甚至不同区域单位(如省与省之间)的数据标准不一致,造成数据交换共享困难。公安部在2009年提出建立大情报系统的整体规划时就明确提出,公安的标准建设是公安系统数据整合利用的基础,一定要切实落实并形成机制,系统化管理。标准检测系统是在公安部要加强公安网内应用软件标准执行情况管理而推出的

5、一套管理系统,它旨在通过对公安部标准库中的标准和应用软件采用的标准进行比对扫描,确定应用软件采用的标准是否符合部里要求,是否达到上线运行的合格条件。本系统作为规范标准管理,加强软件监管的一个有力手段,要和公安部颁发的相关管理规范配套使用才能取得应有的管理效果。本套系统完整提交应包括以下几部分:系统设计文档、软件标准提交规范、需求分析说明书、概要设计、详细设计、测试报告、程序安装工具包、用户操作手册、培训等。第2章 系统分析2.1 需求分析标准检测系统是在公安部科信局要加强公安网内应用软件标准采用规范化的要求下而提出的管理系统,具体的需求主要有以下几方面。2.1.1 标准库管理软件要能对公安行业

6、内现行的标准进行动态管理,在多级部署的情况下,要能够完成分级更新的功能。标准库的每一次更改要记录日志。标准库的修改可以支持版本升级。2.1.2 灵活自动的标准检测标准检测是本系统最主要的功能需求,要求可以采用入库扫描和样本扫描两种检测方式。入库扫描是指系统通过扫描应用软件的数据库中相应的标准代码数据表与正确的部颁标准进行检测的扫描方式。这种方式要求系统支持各种应用软件的数据库接口,通过指定数据库连接参数连接到应用软件的数据库,再通过指定的数据表及字段参数来定位标准数据。入库扫描可以最大限度的检测应用软件的标准采用情况。样本扫描是指在入库扫描不方便实施或应用软件无法提供数据库接口的情况下,采用应

7、用软件提供标准样本进行扫描的一种检测方式。样本扫描要求应用软件提供商按照部里要求的格式规范提供标准样本,并保证此样本与应用软件实际采用的标准一致,此项一致性要求主要通过部里颁发的管理要求和规章制度来完成。标准检测时可以根据标准的级别和合格比例计算检测结果。标准检测要记录操作人员的相关信息。2.1.3 对检测结果进行有效处理标准检测的结果作为应用软件可否在公安网内上线运行的证明,具有重要的意义。检测结果要对概要和明细进行全部管理,并可统计查询、打印报表。2.1.4 灵活的安装部署模式系统要支持公安部、省、市等多级部署,支持在线升级和标准检测数据和结果的上传下载。要对客户端的安装部署进行注册跟踪,

8、可以查看客户端的运行情况。中心服务采用b/s方式,采用web进行综合管理和统计查询。2.1.5 软件及数据的安全达到要求因为一些标准的内容有涉密的要求,软件的网络交换数据和数据存储要达到相应的安全性要求,要求加密传输,加密保存。2.1.6 灵活易用性系统充分考虑使用者的计算机应用水平,具有良好的人机界面,简洁明快,易于接受,易管理,易维护,并提供远程自动升级功能,尽可能减少系统的维护量。2.1.7 通过网络进行自动更新和动态监控c/s客户端要可以通过网络和更新服务器自动完成在线升级,不需要用户进行干涉。管理中心可以对客户端的运行情况进行动态监控、状态跟踪和版本管理。部里要对全国的应用系统检测结

9、果进行集中管理,下级单位要将检测结果通过网络自动上传到部里的综合管理系统,综合管理系统可以对检测结果进行多种查询统计。管理中心子系统采用基于j2ee的多层系统架构,数据库采用oracle,管理中心子系统主要包含如下功能:2.2 系统部署图2-2 系统部署示意图如图2-2所示,整个系统分人管理中心和客户端两部分,管理中心部署在公安部,客户端安装在各级公安机关。2.3 组织结构图2-3 组织结构图客户端由管理中心进行管理,管理中心用户分为部级用户和省级用户两级,部级用户管理部级和省级客户端,省级用户管理市级客户端。2.4 业务流程本系统最基本的一个业务流程就是标准检测的程序,以下是其基本流程图。上

10、传标准使用情况报表标准检测统计分析员管理中心信息库检测结果标准库数据被检系统数据图2-4 基本业务流程图第3章 系统设计3.1 技术方案根据整个系统的功能需求和公安网内应用软件的现状,系统采用c/s架构和b/s架构相结合的方式。c/s架构程序负责具体的检测工作,安装在部、省、市各个信息节点,受管理中心监控,并通过网络与管理中心时行数据交换。开发工具采用power buider。power buider是优秀的桌面程序开发工具,资源众多,性能先进,安装部署方便,是开发基于windows应用的首选开发环境。数据库可以采用多种通用的数据库平台,为了使系统部署更容易灵活,系统使用access 2003

11、数据库,易用方便。b/s架构程序负责标准库管理、对全国各个客户端节点的管理监控以及对检测结果的综合管理,包括查询、统计、分析、归档等。b/s采用j2ee进行构建,使用struts、hibernate、jstl等成熟的技术架构进行开发。数据库采用oracle,可以采用9i,也可以采用10g。应用服务器采用免费的apache和tomcat,部署试运行后根据性能要求和数据量大小,可以部署到其它商用应用服务器上。多级部署和在线升级采用基于web service的接口服务方式进行,公安部设立全国的系统中心,统一对全国各级系统提供支持和管理,在公安部设立的全国系统服务接口,各省市部署点通过接口进行升级更新

12、操作。3.2 功能模块设计本系统分为两个子系统进行开发部署,检测客户端主要功能是进行标准检测及结果上传,管理中心的主要功能是标准库管理、检测结果的统计分析。在线更新和数据交换功能存在于两个子系统中,需要两个子系统的配合来完成。标准检测系统检测客户端管理中心检测管理标准浏览系统维护在线升级标准管理用户管理客户端管理公安领导检测结果统计分析系统管理图3-1 总体功能结构图3.3 数据库设计3.3.1 数据库模型设计数据库模型设计是在需求分析的基础上分析系统中的各种实体,并找出各种实体间的关系。在本系统中主要的实体有两个,一个是标准信息,一个是检测结果信息。下面是本系统主要的e-r图。标准信息标准编

13、号标准名称标准类型图4-1 标准信息实体e-r图标准小类信息标准编号标准小类编号标准小类名称图4-2 标准小类信息实体e-r图标准代码明细信息标准小类编号编号代码名称图4-3 标准代码明细信息实体e-r图标准数据项明细信息标准小类编号编号数据项名称数据项类型图4-4 标准数据项明细信息实体e-r图检测结果信息系统名称开发商检测日期图4-5检测结果信息实体e-r图检测结果标准信息标准小类编号记录数通过数图4-6检测结果标准信息实体e-r图检测结果代码明细信息是否符合代码名称图4-7检测结果代码明细信息实体e-r图检测结果数据项明细信息是否符合代码名称图4-8检测结果数据项明细信息实体e-r图标准

14、信息标准小类信息标准代码明细信息检测结果信息检测结果标准信息标准检测明细信息包含包含包含包含引用引用图4-9实体间关系e-r图3.3.2 数据字典进行完数据库的实体设计以后,就要进行数据库的结构设计,确定建立什么事,什么字段,什么数据类型以及长度等,把这些信息整理在一起,形成一个数据字典,做为后期系统开发的一个参考。表4.1数据表名称设计规范序号数据表名称备 注1bz_xxb标准信息表2bz_xlb标准小类表3bz_dmmxb标准代码明细表4bz_sjmxb标准数据项明细表5bd_jgxxb比对结果信息表6bd_tables比对结果表信息表7bd_fields比对结果字段表8bd_jgbzb比

15、对结果标准表9bd_dmmxb比对结果代码明细表10bd_sjmxb比对结果数据项明细表11xt_szb系统设置表12xt_user用户信息表13xt_popedom用户权限模块表14xt_ywlx业务类型表表4.2标准信息表(bz_xxb)序号列名数据类型宽度能否为空注释备注1bzbhchar100n标准编号主键2bzlxchar30y标准类型3zwmcchar500n标准名称4icschar30yics号5ssrqchar12y实施日期yyyy-mm-dd6mjchar1y密级7tcdwchar100y提出单位8bzchar500y备注9sftychar1n是否停用1为停用,0为有效10b

16、bnumber22y版本,用于自动升级11bzflchar30y标准分类表4.3标准小类表(bz_xlb)序号列名数据类型宽度能否为空注释备注1bzxlbhchar50n小类编号,在标准编号的后面加上.序号,没有小类的加上.0 主键2bzbhchar100n标准编号3xlchar250y小类名称,标记为第几部分4dmsjchar1n代码数据 1为代码,2为数据5bbnumber22y实施日期表4.4标准代码明细表(bz_dmmxb)序号列名数据类型宽度能否为空注释备注1bzmxbhchar100n标准明细编号主键2bzbhchar100y标准编号3bzxlbhchar50n小类编号4dmcha

17、r50y代码5mcchar100y名称6smchar500y说明7mjchar1y密级8bzchar500y备注9sftychar1y是否停用 1为停用,0为有效10bbnumbery版本,用于自动升级表4.5标准数据项明细表(bz_sjmxb)序号列名数据类型宽度能否为空注释备注1bzmxbhchar100n标准明细编号,主键主键2bzbhchar100n标准编号3bzxlbhchar50y小类编号4xhchar50n序号5sjxmcchar100n数据项名称6sjxlxchar30n数据项类型7sjxcdchar22y数据项长度8smchar500y说明9mjchar1y密级10bzcha

18、r500y备注11bbnumber22y版本,用于自动升级表4.6比对结果信息表(bd_jgxxb)序号列名数据类型宽度能否为空注释备注1bdidnumbern比对结果id 主键,自动加一2xtmcchar100n系统名称3bbhchar50y版本号4kfschar100n开发商5ywlxchar100n业务类型6zrdwchar100n责任单位7bzsnumbern标准数8tgsnumbern通过数9bdrychar30n比对人员10bzchar500y备注11bdrqchar10y比对日期 yyyy-mm-dd表4.7比对结果表信息表(bd_tables)序号列名数据类型宽度能否为空注释备

19、注1bdtableidnumbernid 主键,自动加一2bdidchar100n比对结果id3bzchar50y备注4tablenamechar100n表名5tablecommetchar100n表注释表4.8比对结果字段信息表(bd_fields)序号列名数据类型宽度能否为空注释备注1bdfieldidnumbernid 主键,自动加一2bdtableidnumbernbdtableid3bdidnumbern比对结果id4bzchar150y备注5fieldnamechar50n字段名6fieldcommetchar100n字段注释7fieldtypechar50字段类型8fieldnu

20、llchar1是否可以为空9fieldlengthnumber字段长度10fielddotnumber小数位数fieldpkchar1是否是主键fielddefaultchar50默认值表4.9比对结果标准表(bd_jgbzb)序号列名数据类型宽度能否为空注释备注1bdbzidnumbern主键主键,自动加一2bdidnumber100n外键,结果表主键3bzxlbhvarchar50y标准小类编号,外键,标准小类表主键4jlsnumber100n记录数5fhsnumber100n符合数6bfhsnumbern不符合数7fhblnumbern符合比例8bdfschary比对方式为文件比对为入库

21、比对9bdjgchary比对结果成功0失败10bzvarchary备注表4.10比对结果代码明细表(bd_dmmxb)序号列名数据类型宽度能否为空注释备注1bdmxidnumbern主键主键,自动加一2bdbzidnumber100n结果标准id,结果标准表主键3bzmxbhvarchar50y标准明细编号4dmvarchar50n被检测代码5mcvarchar100n被检测名称6sffhchar1y是否符合表4.11比对结果数据项明细表(bd_sjmxb)序号列名数据类型宽度能否为空注释备注1bdmxidnumbern主键主键,自动加一2bdbzidnumbern结果标准id,结果标准表主键

22、3bzmxbhvarchar50y标准明细编号4tablenamevarchar50n表名5fieldnamevarchar50n字段名6sffhvarchar1y是否符合表4.12系统设置表(xt_szb)序号列名数据类型宽度能否为空注释备注1khdidnumbern客户端id,用于注册2xzqhvarchar6n行政区划3ipvarchar50yip地址4fwdipvarchar100n服务中心ip5lastloginvarchar20n最后登陆时间6bbhnumbern客户端版本号7bzbbnumbern标准版本8dwmcvarchary单位名称9fzrxmvarchary负责人姓名10

23、fzrdhvarchar20y负责人电话表4.13用户信息表(xt_user)序号列名数据类型宽度能否为空注释备注1u_idvarchar10n用户id2u_namevarchar100n姓名3u_passwordvarchar20n密码4u_notevarchar100y描述5u_gmsfhmvarchar18y身份证号6u_telvarchar20u电话表4.14用户模块权限表(xt_popedom)序号列名数据类型宽度能否为空注释备注1u_idvarchar10n用户id2menu_namevarchar100n菜单名3item_textvarchar50y模块文字4item_namev

24、archar100n模块名5abledvarchar100n是否可用表4.15业务类型表(xt_ywlx)序号列名数据类型宽度能否为空注释备注1idnumbern主键主键,自动加一2ywlxchar100n业务类型第4章 系统实现4.1 框架与界面设计一个设计良好、操作人性化的界面会给用户赏心悦目的感觉,也有利于用户快速上手,提高工作效率。pb自带的按钮以及工具栏等做为基本的标准控件,外形过于普通,按钮和文字也过小,不方便使用。因此有必要选择一套改良过的界面控件进行开发。本系统的主程序如图4-1所示。图4-1 主程序设计图主程序采用windows多文档结构(mdi),程序界面的上部为主菜单和常

25、用工具栏,左侧为功能导航,这是一个按子系统划分的类似于outlook风格的导航面板,点击相应的按钮可以打开相应的功能模块。左侧的导航可以通过点击“隐藏导航栏”、“显示导航栏”来显示和隐藏,当导航栏隐藏时,可以为用户提供更多的窗体工作空间。点击工具栏右侧的图像标志可以显示本系统的说明对话框。4.2 系统主要难点及其实现由于自己的水平有限,对pb的使用经验较少,在系统的设计开发中难免会遇到很多困难,以下几个问题是本系统中比较典型并相对复杂的功能。 4.2.1 连接多个数据库进行标准检测,需要让用系统内正确的标准信息与用户提供的样本信息进行比对,得出比对结果。被检测系统提供的检测样本基本上都是以数据

26、库的形式提供的,一般是在用户搭建的测试环境或试运行环境中直接连接被检系统的数据库进行检测。 我们一般的系统都是连接自身的数据库,而本系统是在连接本地数据库基础上还要由用户在操作界面上指定连接参数,连接到被检系统的数据库。pb连接连数据库是通过pb的事务对象来进行的,sqlca是pb为每个系统自动生成的一个全局数据库连接对象。如果要连接多个数据库,就需要手工声明多个事务对象。不同的数据库系统需要提供不同的连接参数,本系统不能保证可以连接到所有的数据库系统,根据各个数据库系统在公安行业内的应用情况,可以完成以下三种方式连接即可:oracle、sql server、odbc。 orac

27、le连接oracle数据库需要提供的参数有:服务名、用户名、密码,图4-2是连接oracle数据库的窗体设计图。图4-2 oracle数据库连接对话框点击确定的代码如下:/声明事务对象transaction ora/创建事务对象ora = create transaction ora.dbms = o90 oracle9i (9.0.1)ora.servername = sle_1.textora.logid = sle_2.textora.logpass = sle_3.textora.autocommit = falseora.dbparm = pbcatalogowner= + sle_

28、2.text + connect using ora; if ora.sqlcode0 thenmessagebox(警告,连接失败!,stopsign!)returnelsemessagebox(提示,连接成功!)end if sql server连接sql server数据库需要提供的参数有:服务器名、数据库名、用户名、密码,图4-3是连接sql server数据库的窗体设计图:图4-3 sql server数据库连接对话框点击确定的代码如下:/声明事务对象transaction sql/创建事务对象sql = create transaction sql.dbms = ms

29、s microsoft sql serversql.servername = sle_1.textsql.database = sle_2.textsql.logid = sle_3.textsql.logpass = sle_4.textsql.autocommit = falsesql.dbparm = connect using sql; if sql.sqlcode0 thenmessagebox(警告,连接失败!,stopsign!)returnelsemessagebox(提示,连接成功!)end if odbc对于oracle、sql server以外的数据库,可以

30、采用odbc的连接方式。连接odbc数据源需要提供的参数有:数据源名称、用户名、密码,图4-4是连接odbc数据源的窗体设计图。图4-4 odbc数据源连接对话框点击确定的代码如下:/声明事务对象transaction odbc/创建事务对象odbc = create transaction odbc.dbms = odbcodbc.autocommit = falseodbc.dbparm = connectstring=dsn= + sle_1.text + ;uid= + sle_2.text + ;pwd= + sle_3.text + connect using odbc; if o

31、dbc.sqlcode0 thenmessagebox(警告,连接失败!,stopsign!)returnelsemessagebox(提示,连接成功!)end if4.2.2 枚举数据库中的数据结构进行标准检测,除了在检测时需要数据结构的信息外,得到数据结构也是对应用软件的设计开发进行的一项重要作用。获得数据库中的表以及字段等信息,可以采用不同数据库系统的系统表来进行。 orcleoracle的表信息保存在all_tables表中,查询所有表信息的语句为:select * from all_tables where owner=用户名字段信息保存在all_tab_columns

32、表中,查询所有字段的语句为:select * from all_tab_columns where owner=用户名在oracle中,表和字段的注释并没有和表信息与字段信息保存在一起,而是单独保存在不同的表中,以下是查询表注释的语句select * from user_tab_comments where comments is not null and table_name=表名;以下是查询字段注释的语句:select * from user_col_comments where comments is not null and table_name=表名 and col_name=字段名

33、; sql serversql server中的表信息存在sysobjects表中,字段信息存在sysobjects中,下面是一个相关的查询语句:查表名 select name as tablename, as tablecommet from sysobjects where xtype=u and namedtproperties; 查字段 select tablenam= , fieldname=, pk=case when exists(select 1 from sysobjects where xtype=pk and parent_obj=

34、a.id and name in ( select name from sysindexes where indid in( select indid from sysindexkeys where id = a.id and colid=a.colid ) then 1 else end, fieldtype=, fieldlength=columnproperty(a.id,,precision), fieldnull=case when a.isnullable=1 then 1else 0 end, fielddefault=isnull(e.text,), f

35、ieldcommet=isnull(g.value,) from syscolumns a left join systypes b on a.xusertype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype=u and dtproperties left join syscomments e on a.cdefault=e.id left join sysproperties g on a.id=g.id and a.colid=g.smallid where =userinfo order

36、by a.id,a.colorder4.3 主窗体创建及程序搭建创建应用程序后,在app的open事件中写程序的启动代码:/ profile databasesqlca.dbms = odbcsqlca.autocommit = falsesqlca.dbparm = connectstring=driver=microsoft access driver (*.mdb);dbq=hfwl.mdbconnect using sqlca;if sqlca.sqlcode 0 thenmessagebox (警告, 连接数据库出错!rn + sqlca.sqlerrtext ,stopsign!)

37、haltend if /全局结构变量赋值str_sys.systemname=公安标准检测系统str_sys.ver=1.0str_sys.dbver=20090928str_sys.userid=wzfstr_sys.username=超级用户str_sys.usercorp= /使用单位open(w_logo)以上语句首选连接数据库,再定义一个全局变量,最后打开用户登陆窗口。图4-5 系统登陆对话框输入用户名和密码后,点击“确定”按钮,如果正确,则进入主窗体,如果错误则提示密码错误。以下是确定按钮的click事件代码: select xt_user.u_password,xt_user.u

38、_name,xt_user.u_id into :ls_pass,:str_sys.username,:str_sys.userid from xt_user where xt_user.u_id = :sle_1.text ;if ls_passsle_2.text or sqlca.sqlcode=100 thenmessagebox(警告,用户名或密码错误!,stopsign!)sle_1.setfocus()returnend ifopen(w_main)close(parent)4.4 菜单设计主菜单是应用程序的功能框架,主菜单命名为m_main,图4-6是菜单结构。图4-6 菜单设

39、计示意图各菜单项的click事件代码就是打开各个功能对应的窗口。如“用户管理”菜单项的代码为:opensheet(w_rybm,parentwindow,-1,original!)其它菜单项的功能和写法跟这个基本相似,不再一一列出。4.5 数据窗口设计power builder的数据窗口是其一大特色,用pb开发数据库应用程序就离不开数据窗口的设计。在本系统中,用到了两类数据窗口,一类是form式的,如被检系统信息的录入编辑,一类是列表式的,如被检系统列表等。图4-7是本系统内设计的一部分数据窗口:图4-7 数据窗口设计示意图4.5.1 列表数据窗口对于列表式的数据窗口,根据可否进行编辑分为两种

40、:只读式和编辑式。对于只读式的数据窗口,用户不能进行在线编辑,只用来显示,如图4-8是一个操作人员的数据窗口设计图:图4-8 操作人员数据窗口设计图为了使在每一行点击鼠标时改变当前行的颜色,需要修改数据窗口的属性,从源文件中可以看出:datawindow(units=0 timer_interval=0 color=16777215 processing=1 htmldw=no print.printername= print.documentname= print.orientation = 0 print.margin.left = 110 print.margin.right = 110

41、 print.margin.top = 96 print.margin.bottom = 96 print.paper.source = 0 print.paper.size = 0 print.canusedefaultprinter=yes mpt=no print.buttons=no print.preview.buttons=no print.cliptext=no print.overrideprintjob=no print.collate=yes hidegrayline=no grid.lines=0 grid.columnmove=no selected.

42、mouse=no )4.5.2 form数据窗口form式的数据窗口一般是对应一条记录,所以为了显示该条记录,一般要传入一个参数,在数据窗口的设计时就需要定义一个参数。比如以下下面的sql语句做为数据源:select * from bd_jgxxb where ( bdid = :bdid ) :bdid就是定义的一个参数,这个数据窗口在加载数据时需要传入此参数:dw_xtxx.settransobject(sqlca)dw_xtxx.retrieve(bdid)上面代码中的bdid窗体中定义的一个long型变量。4.6 标准检测功能实现标准检测是系统的主要功能,也是核心功能。标准检测模块由两

43、个窗口组成,一个是检测结果列表窗口,一个标准检测编辑窗口。检测结果列表窗口的界面如图4-9所示。图4-9 检测结果列表界面图上部是一个按钮区,有“新建被系统”、“修改被检测系统”、“删除被检系统”、“退出”四个按钮。下是一个一数据窗口:dw_xtxx。为了使数据窗口可以充满整个窗体,在窗口的risize事件中写入如下代码:dw_1.width=this.workspacewidth() - dw_1.x - 4dw_1.height=this.workspaceheight() - dw_1.y 4这样可以保证在窗体显示和调整大小时,数据窗口都在显示在整个窗口面板上。在窗口的open事件中写入

44、以下代码使数据窗口获取数据:dw_1.settransobject(sqlca)dw_1.retrieve()双击数据窗口,会打开标准检测检测编辑窗口,这里要往编辑窗口中传递一个参数:bdid。这个值是检测结果信息表的主键,以下是相关代码:long bdidbdid = dw_1.object.bdid.primarydw_1.getrow()opensheetwithparm(w_bzjcedit, bdid, w_bzjclist, 2, original!)opensheetwithparm函数的功能是打开一个有参数窗口,其中第二个参数是要传递给要打开窗口的参数,这个参数可以是strin

45、g、numeric、powerobject三种。 传递给窗口的参数,powerbuilder会把它保存在一个系统对象message中,新窗口通过message对象就可以取得相应的参数。对应于三种不同类型的参数,接受参数的方法也不一样,以下是对应方法:表4.1 pb参数读取方法参数类型读取参数说明numericmessage.doubleparm数值型参数stringmessage.stringparm字符型参数powerobjectmessage.powerobjectparm对象型参数标准检测编辑窗口是一个信息项比较多的窗口,所以我把它用tab控件分成了三个tabpage,程序界面如下:图4

46、-10 系统检测界面示意图在被检测系统信息页面,放置的是一个dw_xtxx的数据窗口,在本数据窗口中,有一个“业务类型”的下拉框,本下拉框对应着另外一个数据窗口dw_ywlx。它作为一个数据窗口的“子窗口”,在显示时需要通过主窗口设置进行填充数据。以下是窗口open的代码:/打开业务类型下拉框列表datawindowchild state_childtab_1.tabpage_xtxx.dw_xtxx.getchild(ywlx, state_child)state_child.settransobject(sqlca)state_child.retrieve()bdid = message.

47、doubleparm;if bdid = -1 then tab_1.tabpage_xtxx.dw_xtxx.reset() tab_1.tabpage_xtxx.dw_xtxx.insertrow(0)else tab_1.tabpage_xtxx.dw_xtxx.settransobject(sqlca) tab_1.tabpage_xtxx.dw_xtxx.retrieve(bdid) tab_1.tabpage_bzxx.dw_bzxx.settransobject(sqlca) tab_1.tabpage_bzxx.dw_bzxx.retrieve(bdid)end if标准信息列

48、表是指当前的被检系统对应的标准信息,一般一个应该系统都会采用多个标准。点击标准列表下的“添加标准”按钮,会打开选择标准对话框,在选择标准对话框里选择相应标准后,再把选择的标准添加到该被检系统的标准列表中来。这里就又涉及到一个传递参数的问题:弹出窗口如何把参数返回给调用它的父窗口。pb没有像showmodal这样的弹出模式对话框的语句,它是通过把弹出窗口的windowtype设置成response!,这样通过open()函数打开的窗口就是一个模式窗口,父窗口会等待这个窗口关闭以后再执行下面的语句。弹出窗口要想把参数传递给父窗口,需要使用closewithreturn函数,这个函数的第一个参数是要

49、关闭的窗口名称,第二个参数是要传递给父窗口的数据。选择标准窗口确定按钮的代码为:string bzxlbhbzxlbh = dw_1.object.bzxlbh.primarydw_1.getrow()closewithreturn(parent, bzxlbh)这里把从列表中取得的bzxlbh作为参数传递给调用窗口。标准检测编辑窗口调用的语句为:open(w_bzxx)insert into bd_jgbzb (bdid,bzxlbh) values (:bdid,:message.stringparm);if sqlca.sqlcode0 thenmessagebox(警告,出现错误!,stopsign!)returnelsemessagebox(提示,标准已添加!)end iftab_1.tabpage_bzxx.dw_bzxx.retrieve(bdid)在这里open完窗口后,通过message.stringparm来接收传递过来的参数,同时

温馨提示

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

评论

0/150

提交评论