《计量与灏试技术》2oo8年第35卷第1O期 证书打印管理系统的设计 Certificate Printing Management System Design 陈光贵 (贵州省计量测试院,贵州贵阳550003) 摘要:本文介绍运用JAVA技术和SQLSer ̄er数据库技术来设计证书打印管理系统,使出具证书时所需要的数据运算和结果处理及判定实现自动 化、证书格式的自动设计,以及生成报表,并实现证书的高效打印和管理。 关键词:打印管理;结果判定;数据库 1 引言 系统模块包括登录模块、信息输入模块、信息查询 模块、信息更改和删除模块、数据处理模块、结果判定 模块、证书打印模块、数据导出模块。 4.2数据库设计 证书打印和管理在计量测试工作中看似简单,但是 要做好这项工作并不容易。虽然现在在检定测试以及证 书的出具中大量运用了计算机技术,但是由于计量测试 内容本身很复杂,以及不同类型的计量器具所具有的相 数据库平台用SQLServer2006。根据使用需要运用 PowerDesign设计数据关系图,然后生成数据表:用户 验证表、计量器具信息表、计量标准信息表、检测记录 表、检测环境表以及检测结果和日期表等,设计数据表 对独立性的限制,使得设计一个统一的证书打印管理系 统难度很大,目前很多证书打印系统只是运用电子表格 实现一些简单的运算,要想真正实现证书打印管理的自 动化和高效率,比如数据的导出、查询等功能,只有建 立一个完整的数据库管理系统才能实现。下面介绍采用 JAVA技术和SQLServer数据库技术设计一个功能较齐 全的证书打印管理系统。 2系统主要功能 时最好把证书编号定义为关键字。图2是计量器具信息 表,其他表类似。 字段名 证书编号 计量器具名称 类型 varchar vat-char 宽度 1oo 10H0 要满足证书的高效打印于管理,系统必须包含以下 制造单位 型号规格 出厂编号 varchar varchar vsrch81" 1oo 100 100 功能:信息录入,数据运算,结果处理,结果判定,信 息查询、信息存储,信息修改,信息删除,生成报表。 3架构设计 图2计置器具信息表 本系统采用客户机朋艮务器(C1ient—Server)应用 程序,数据处理过程在应用端计算机上执行,数据保存 用T—SQL命令来创建数据表;典型的命令如下: Create table“S S—CHEN”。“Filelnformation” 在数据库服务器上,应用端和数据库之间通过JDBC连 接,数据保存与处理分离,实现了更高的安全性。如图 1所示: (“ZSBH”varch31"(100)not null, “JLQIMC”varchar(100)not null, “ZZDW”varchar(100)not null, “XHGG”varchar(100)not null。 “0 H”varchar(100)not nul1. 应 用 端 计 类似地可以创建其他的表,然后根据需要创建视 图,视图的创建和表的创建类似。 4.3用JDBC连接数据库 使用JDBC连接数据库一般需要以下几个步骤: (1)安装SQL Server2000、JAVA和JDBC环境; (2)导入需要的JDBC类; 算 机 图1客户机朋昆务器架构 4系统总体设计 (3)装载并注释JDBC驱动程序; 4.1模块设计 (4)从驱动器中取得连接对象。 陈竞贵:证书打印管理系统的设计 5代码设计 5.1代码设计的工具选择JBui1der2006 首先设计一个登录界面,用户可以通过输入用户名 和密码,然后按“提交”按钮,等系统确认无误后就能 进入系统执行操作。部分代码如下: public void jButtonl actionPerformed(ActionEvent e){ ResultSet rs=null; ConnectDBBean conndb=new ConnectDBBean(); String name=jTextField1.getText(); String password=jTextField2.getText(); String sql= select*from FileAdm where User— Name= name+F and UserPassword=。 password if(!(password.equals( ))&&!(nalTle. e— quals( ))) {try{rs conndb.executeQuery(sq1); if(rs.next()) {boolean packFrame=false; Frame2 frame=new Frame2(); if(packFrame){frame.pack();} else{frame.validate();} Dimension screenSize=Toolkit.getDefaultToolkit ().getScreenSize(); Dimension frameSize=frame.getSize(); if(frmaeSize.height>screenSize.height){ frameSize.height=screenSize.height;} if(frameSize.width>sereenSize.width)t frameSize.width=screenSize.width;} frame.setLocation((screenSize.width—frame— Size.width)/2, (screenSize.height—frameSize.height)/2); frame.setVisible(true);this.dispose();} else{JOptionPane.showMessageDilaog(null,“对 不起,你不是合法用户”); }} catch(8QLException ex) {System.err.println (“sql error”);}} else{JOptionPane.showMessageDialog(null,“用 户名和密码不能为空,请重新输入!”);}} 在这段代码中可以看出,当用户名和密码不对的时 候,系统会发出消息,说明情况,当用户名和密码验证 通过了就进入主界面。 5.2其他功能模块代码设计: 在功能模块代码设计中几乎都要引用一段公共的代 码,那就是连接数据库的代码,代码如下: public class ConnectDBBean{ ResultSet rs ̄--null; String ConnStr= ̄dbc:odbc:CHEN"; String MyDl-iver= sun.jdbc.odbc.JdbcOdbc— Driver"; Connection conn=null; public ConnectDBBean(){try{Class.forName (MyDriver);} catch(Exception ex){System.err.println( 连 接数据库出错: +ex.getMessage());}} 查询模块的部分代码如下: public ResultSet executeQuery(String sq1) {rS= null; try{ conn rDiverManager. getConnection (connStr, sa", sa"); Statement stmt=corm.createStatement(); rs:stmt.executeQuery(s4);} catch(SQLException e){ System.out.println C查询出现错误 +e. getMessage());} retum rs;}{ 根据相关的规范和规程要求类似地设计其他功能模 块。检测结果的打印格式具有多样性,系统根据结果内容 情况自行设计格式。比较简单的方法是将检测结果建立成 数据结构,系统根据数据结构排列成表格,并填充数据。 6界面设计 界面的设计主要是要考虑的界面的信息容量要尽可 能多,同时排列要科学有序以及操作方便。图3是系统 的登录界面。 图3登录界面 作者简介:陈光贵,男,助理工程师;工作单位:贵州省计量测试院。 通讯地址:550003贵阳市头桥海马冲街45号。 收稿时间:2008一O4—22