计算机工程
COMPUTER ENGINEERING
1999年 第25卷 第12期 vol.25 No.12 1999



车管业客网络官理信息系统中“黑匣子”功能的设计与实现
淡战平　侯义斌
　　车管业务网络管理信息系统是结合我国现状，针对省市级车辆管理所开发的一套机动车和驾驶员档案网络管理信息系统，目前承担着西安市50多万份机动车和驾驶员档案的日常管理任务，系统采用Client/Server模式，Sybase/Powerbuilder开发环境，是国内同类系统中技术较为先进的一个。
　　本系统运行环境和操作人员组成十分复杂，两个安装着Windows NT Server的HP中心服务器连接着微机中心、证照大厅、档案室、车检中心、体检中心、交通指挥中心、4个车管分所等局域网和DDN专线用户共计80多个，网络用户使用的操作系统有Windows 3.1/3.2和Windows 95/98。虽然提供了严格的权限设置功能，但为了进一步保证系统安全性和数据可靠性、完整性及权威性，防止操作失误，杜绝操作人员徇私舞弊，参照一些大型系统中的系统日志设计并实现了一个功能强大的"黑匣子"功能，该功能自动记录每一个用户什么时间在什么地方通过哪台计算机进入系统，又在什么时间进行了哪些具体操作等等信息，该功能的设计思想对同类管理信息系统具有一定的借鉴作用。 
1 "黑匣子"的设计
　　"黑匣子"中要记录的信息包括两个大类，一类是与网络和操作系统相关的，一类是与具体业务相关的。与网络和操作系统相关的信息包括入网计算机名及IP地址、入网时间、入网用户名等，与具体业务相关的信息则对应着本系统的各个子功能项。
　　本系统包括机动车和驾驶员档案管理两大部分。机动车档案管理以车牌号为主线，以行驶证为主要管理内容，涉及车辆入户、年检、变更、改装、停驶、过户、报废、转出等各个环节。驾驶员档案管理内容包括准考证、学习证、正式驾驶证、出租车准驾证、临时驾驶证等，各种证件的管理均以证号为主线，涉及证件的申请、变更、审验、吊扣、注销、转出等各个环节。
　　由于要记录的信息比较多，故"黑匣子"的设计原则是尽可能简洁，以减少空间和时间占用，尽可能一"匣"多用。
　　根据以上设计原则，在整个系统中只设置了一个"黑匣子"，这个"黑匣子" 融驾驶员档案管理和机动车档案管理两部分于一体，既保存网络和操作系统相关信息，又保存业务相关信息。"黑匣子"表结构如下：
　　Record_type ( 证件种类)：数据类型tinyint，1-7代表7个不同车类的行驶证，8-12分别代表准考证、学习证、正式驾驶证、出租车准驾证、临时驾驶证。
　　Record_number(证件号码)：数据类型char (6)，存放5位车牌号码或6位其它证件号码。
　　Operate_type (操作种类)：数据类型tinyint，1-16分别代表机动车档案管理的子功能项，17-31 分别代表驾驶员档案管理的子功能项。
　　Operate_add_info(附加信息)：数据类型varchar (40)，记录某些操作的附加信息，如转出操作的转往地等。 
　　Operate_person(操作员)：数据类型tinyint。 
　　Operate_time(操作时间)：数据类型datetime。 
　　Login_name(入网用户名)：数据类型tinyint 
　　Login _computer(入网计算机名)：数据类型tinyint。
　　其中证件种类、操作种类、操作员、入网用户名、入网计算机名的详细信息分别对应不同的数据字典，由系统管理员维护。每个操作员均有自己的入网用户名、入网口令及进入本系统的口令，口令由操作员自己保管并随时可以修改。
2 "黑匣子"的实现
　　要实现"黑匣子"功能，关键问题是获取并记录所需要的信息。由于"黑匣子"中要求的网络和操作系统相关信息均保存在Windows 3.1/3.2或Windows 95/98的系统注册表中，利用Powerbuilder中的有关操作系统注册表的函数获取这些信息，如：
　　RegistryGet("HKEY_LOCAL_MACHINE\System\CurrentControlSet & control\ComputerName"， "ComputerName", RegString!, Login_Computer)
　　可以获得入网的Windows 95/98客户的计算机名，注意Windows 3.1/3.2系统注册表与Windows 95/98略有不同，实现过程中先通过GetEnvironment (env)函数判断操作系统种类，再选取不同的注册表键值，以正确地获取所要的信息。
　　"黑匣子"中与具体业务相关的信息由各个子功能模块产生并由它们自动获取，这部分信息产生频率很高，因此对整个系统的效率影响很大，为了节省保存信息的时间，使用了Sybase中的存储过程。
　　首先在Sybase Server中增加存储过程：
　　create procedure insertblackbox (@Record_type tinyint, @Record_number char(6), @Operate_type tinyint, @Operate_add_info varchar(40), @Operate_person tinyint,@Operate_time datetime,@Login_computer tinyint )as
　　insert into blackbox
　　values
(@Record_type, @Record_number, @Operate_type, @Operate_add_info, @Operate_person,getdate(),@Login_computer )
　　其中getdate()函数返回当前的操作时间。
　　然后在Powerbuilder中建立一全局用户对象并在该对象中声明存储过程insertblackbox，这样就可以在程序中各个子功能模块中使用它了。采用存储过程保存"黑匣子"信息既提高了运行效率，又降低了程序复杂性，可谓一举两得。实际应用中，完整的"黑匣子"功能还包括信息查询、转储等。
3 结束语
　　车管业务网络管理信息系统由于设置了"黑匣子"功能，不但保证了系统安全性和数据可靠性、完整性及权威性，而且从技术上减少了操作失误，杜绝了操作人员的徇私舞弊现象，收到了良好的效果。
作者单位：西安交通大学电脑信息技术研究中心，西安710049
参考文献
1 邵佩英，杨孝如. Sybase数据库系统基础知识. 北京：中国水利 水电出版社，1998
2 郑人杰. 实用软件工程. 第二版，北京：清华大学出版社，19973 何军. PowerBuilder 5.0原理与应用开发指南. 北京：电子工业出 版社，1997
