1 引言
劳资人事管理是公司企业内部很重要的一个管理事项,但目前大多公司内部劳资人事的管理,基本上是手工操作或是基于dos下的应用,这样对信息的管理者有诸多
不便,有的虽然是用foxpro、visual foxpro开发,但由于开发工具本身的限制,对网络功能的支持程度不是很强,为以后软件升级到互联网带来了麻烦。因此有必
要开发一个基于网络的劳资人事管理系统,能在网络环境下实现数据的录入、插入、删除、查询、统计、更新、打印等功能。同时,为了信息的保密与安全,系统
还要提供一定的安全机制。
Powerbuilder6.5是美国著名的Powersoft公司推出的广泛使用于客户机/服务器体系结构下的应用程序开发工具,具有完整的Web应用开发功能。它同时支持多
种关系数据库管理系统,通过微软公司的ODBC接口和专用的大型数据库接口,能够高速读取数据库中的数据。本系统就采用Powerbuilder6.5开发,服务器端的操作
系统为Windows NT 4.0,客户端操作系统为Windows 98。
2 系统功能的分析及规划
(1)系统功能的分析
公司内部的劳资人事的管理,从大的方面分主要集中在公司职员的个人情况、工资细目、调入调出及用车等。所以该系统主要是实现对数据的录入、插入、
删除、网上查询、统计、更新、打印等功能。其次,
为了信息的保密与安全,系统还要提供一定的安全机制。
(2)系统功能的规划
根据以上系统功能的分析,本系统决定采用MDI风格,它主要分为以下几个模块,其中劳资人事管理系统的父窗口的功能结构图如图1所示。
文件模块:此模块实现本系统对数据的打开、保存、打印预览、打印及用户管理等功能,并可由此退出系统。
信息管理模块:此模块实现系统的信息管理,包括对职工情况一览表、职工调入调出情况表、职工工资表及其它各表的信息数据的插入、删除、修改、保存等功
能。
查询模块:此模块实现本系统的查询功能,能将个人的基本情况、调入调出情况、工资情况等检索出来,并可实现多条件查询和模糊查询。
统计模块:此模块用于对数据库中的信息数据按照一定的规则进行统计。
系统服务模块:此模块用来系统管理人员设密码和对系统的功能和开发信息进行介绍等。
对于系统中的各表,其基本信息管理功能结构图如图1所示:
图1. 职工基本信息管理功能图
3 根据用户要求设计数据表
数据表的建立是应用程序开发过程中的非常重要的一个环节,必须清楚每一模块要操纵的数据是那些,以及数据间的相互关系,然后建立数据表。劳资人事管
理系统要求能对职工的个人情况、调入调出情况、工资情况等进行管理,在职工个人情况表下面,还有象维护职务表,维护学历表等等。同时还要对系统设置安全
机制,为实现以上要求,下面仅以人事、工资、密码表为例介绍一下各表的结构:
职工情况一览表
它包括职工标号、姓名、性别、政治面貌等信息。其结构如下:
code char(4) not null, //职工编码
name char(8) null, //姓名
sex char(2) null, //性别
politics char(8) null, //政治面貌
birthday data null, //出生日期
work_time data null, //参加工作时间
post_zhw char(10) null, //职务
address char(30) null, //家庭住址
该表主键为职工编号(code)。
职工工资表
其结构主要包括职工所得的各种工资福利等。
Code char(4) not null, //职工编号
Name char(8) null, //姓名
g_pay integer null, //岗位工资
j_pay integer null, //技能工资
w_pay integer null, //物价补
s_pay integer null, //书报费
ws_pay integer null, //卫生费
xh_pay integer null, //小孩补贴
a_pay integer null, //工龄工资
ht_pay numeric(6,2) null, //合同补贴
jj_pay numeric(8,2) null, //奖金
total_pay numeric(8,2) null, //工资总额
该表主键为职工编号code。
系统密码表
user_name char(10) not null, //用户名称
user_word char(10) not null, //用户密码
user_qx char(2) not null, //用户权限
4 系统的网络实现
由于Powerbuilder具有完整的web应用开发功能,由它编制的软件可以方便的同服务器端的数据库协同工作,构成Client/Server工作方式,它使用的是业界熟悉的
Web标准(HTML和Java),通过端对对的设计、调试和提交,可以控制Web应用的整个生命周期。本系统客户应用和服务器应用都采用Powerbuilder开发。其中服务
器端的程序是实现中的重点部分,其内容主要是生成SQL语句对数据库操作及对所得的数据进行处理。它主要分为监听客户连接、处理客户请求、避免死锁、向客户
推送消息等。本系统的实现平台关系图如图2所示:
图2. 实现平台关系图
5 关键问题的解决
(1) 安全机制问题
在进入系统之前,要进行身份确认,只有用户名和用户密码都相符的用户方可进入本系统。为了防止不合法用户对数据的察看和修改,本系统把用户分为三个
级别:超级、可修改和只读用户,即一二三级用户。超级(一级)用户不仅拥有对数据的查询、修改权限,还对用户的使用权限进行控制,可以设定用户名、密码和
其权限,还可以对纪录进行增加、删除、修改等操作。可修改(二级)用户对数据可以查询、打印,还可以对纪录进行增加、删除、修改等操作。只读(三级)用
户只拥有对纪录的浏览、查询和打印权限。当用户要进入系统是必须先输入用户名和密码,按"确认"按钮后,系统辨别用户身份,对合法用户根据用户的权限级别
赋予相应的使用功能。
(2) 对任一数据列进行排序的问题。
熟悉Windows的用户一定对资源管理器不陌生,当目录或文件很多时,当然会想到使用排序来尽快定位目标,你只要用鼠标在资源管理器上端的name、size、
type或modified中的任意一项点击,它就会将此项按升序或降序排列。同样地,在PowerBuilder中,如果数据比较多,我们也可以采用这种办法来排序以尽快查找
记录。
本系统以窗口w_rsh为例,要实现这样的排序功能,首先定义两个实例变量String pre_col=""和Int click_time=0,它们分别记录上次点击的列和点击同一列的
奇偶数。然后在dw_1的Clicked事件中添加如下脚本:
String clicked_pos,col,format
Long il_pos
clicked_pos = dwo.Name //取点击的对象
il_pos = Pos(clicked_pos,'_t') //对于列标题,
//取得的对象是列名+"_t"
If il_pos >0 Then
col = Left(clicked_pos,il_pos -1)
If col=pre_col Then
If click_time=0 Then
click_time = 1
format = col+" A"
Else
click_time=0
format = col+" D"
End If
Else
click_time = 0
format = col+" A"
End If
pre_col = col
dw_1.SetSort(format)
dw_1.Sort()
End If
采用上面的方法可实现象Windows中资源管理器灵活排序的功能,从而使所要浏览的数据更加一目了然。
(3) 数据窗口控件的编辑风格的使用
本系统对日期型、需渐变量等数据的输入采用了编辑掩码控件editmask,这样就可以大大方便用户的操作。对于象性别这样只有男、女两个值的,则采用单选钮
radiobutton形式,用户在录入时只需要鼠标点击选钮即可。在设置条件时的值段名和有固定职供用户选择的数据使用了下拉列表框(droplistbox),用户只需选择
所要输入的值即可。
6 结束语
随着计算机的发展与普及,以及互联网技术的扩展,日常劳资人事管理必将实现无纸化办公,并且加入到公司内部的Intranet或者是Internet上去,实现数据的共
享,这样有利于劳资人事信息在单位内部的查询,提高了数据资源的利用,并且能及时的得到更新,不需要象过去那样浪费大量的人力物力去进行抄写,提高了工
作的效率。