发展部件技术分享 http://blog.sciencenet.cn/u/求新 研究方向:数据库、MIS,教育部教指委计算机分委会专家工作组成员

博文

具有自适应性工资管理系统的设计

已有 5856 次阅读 2007-7-9 02:12 |个人分类:生活点滴|系统分类:科研笔记

长期以来人们将管理信息系统开发称为胡子工程,意思是其后期有做不完的事,总是要修改系统程序,总是不让人满意,总是处在不断完善中,一些问题解决了又会出现新的一些问题,就如同胡子一样,总在刮,总在长,总不见干净。
软件工程是因为软件危机而提出的,软件危机的表现之一是软件费用越来越大,尤其是软件维护的费用所占的比例及费用总值越来越高。软件危机在管理信息系统的开发中的表现特别明显。近几十年来,人们在软件开发过程管理与开发方法方面作了大量研究,但软件费用与软件维护费用越来越高的问题并没有解决,甚至更加突出。许多单位已被迫不断重新投入新建系统。
解决办法是要求在设计软件时重视软件可修改性与易修改性、高适应性、高纠错与容错性等。面向对象技术与构件技术对于解决该问题具有一定的意义,但未能根本解决问题。人们期盼具有自适应性的系统出现。理想的自适应性系统指当数据结构、环境等改变时,不需要修改程序,甚至可以不需要重新编译,原有系统就能自动适应变化,如常工作;用户可以字已通过简单操作完成系统的改变甚至升级。
从前面二个实验可以看出,部件在使用时只需要修改接口参数,就可以自动建立界面,实现所需要的功能,具有所需要的性能。这为自适应系统的实现提供了支持。
05年,我们利用部件库设计了具有自适应特性的工资管理系统。工资管理系统结构简单,数据处理内容单一,利用部件库可以十分容易地实现自适应特性。但这个例子实际可以用到更复杂的许多系统设计之中。
工资管理信息系统中程序包括数据维护类、计算与检验、数据查询、打印、月初部分数据清零、转存工资仓库、历史数据分析等内容。如果要求自适应,就要求对以上各个环节预做考虑,当数据结构改变时(增加新字段、删除老字段、字段改名等)如何保证原有程序不受影响,能继续使用。
可以设计一个工资项表,结构与内容如下:
收     字段名 计       是否         操作人员           是否
或                算       打印                                  每月
扣                项       项                                    清零项

关键字 序号             
关键字 姓名          是      
关键字 部门号          是         
       部门名 是
收     固资      固资 是         人事工资员
收     活资      活资 是         人事工资员
收     岗补      岗补 是         人事工资员
收     粮贴      粮贴 是         人事工资员
收     补贴      补贴 是         财务工资员             是
收     补发      补发 是         财务工资员             是
扣     房租      房租 是         行政工资员             是
扣     扣税      扣税 是         财务工资员             是
扣     水费      水费 是         行政工资员             是
扣     电费      电费 是         行政工资员             是
扣     公积金    公积金 是               财务工资员
扣     失险      失险 是         财务工资员
扣     养险      养险 是         财务工资员         
扣     病事      病事 是         生产工资员             是
总收   应发      应发 是         财务工资员             是
总扣   共扣      共扣 是         财务工资员             是
汇总   实发      实发 是         财务工资员             是

其中“计算项”中填字段中用来计算应发工资、实发工资的字段名称,配合“收或扣”所填内容就能自动形成计算公式。是否打印项用于打印格式文件生成,当数据结构改变时需要自动修改打印格式文件,使未来的工资表结构与改变后结构一致。操作人员用于处理不同人员对某一字段的处理权限,不同操作人员只能做各自允许做的操作。该列的数据与字段名列的数据配合,决定自动生成的数据维护界面情况。是否每月清零项在自动转存数据仓库时决定哪些数据要在操作后自动回零。所有查询类部件自身就有自适应特性,如果需要,也可以根据“是否打印项”中的内容自动变更查询界面。
设计了专门的修改工资表结构的程序。没当新加字段时,会提问:是否修改“工资计算项”。如果回答是,会打开修改“工资计算项”的界面,让用户修改上面的数据。还会问:是否修改工资仓库的结构、是否修改打印格式文件,如果回答是,所有修改工作自动完成,除当打印宽度过大,需要手工修改各字段打印宽度数据之外,无需手工介入。
转存工资仓库时只有新加字段会自动加到工资仓库表结构中。删除老工资项不改变工资仓库表结构。原工资表字段名称改变或属性改变时,会提问是否让工资仓库表随之一起改变。
例如提供给人事工资员的是初始录入与修改界面,全系统只指定一人为人事工资员。在人员新调入时,他在工资表中添加该人的新记录;当基本工资变更时,他负责修改基本工资数据值。他对基本工资数据与人员基本情况数据的正确性负责。给他的维护操作所准备的菜单项程序为:
use 工资计算项 in 0      &&打开“工资计算项”表
sele 工资
nnn=afiel(a0)             &&测试工资表的数据结构
s=""
sele 工资计算项
scan for allt(收或扣)="关键字" or 操作人员="人事工资员"   &&查询人事工资员有权操作的字段,读取其顺序号,准备填入参数“字段号表”中
    x=字段名
    for i=1 to nnn
        if allt(a0(i,1))=allt(x)
            s=s+allt(str(i))+","       &&求人事工资员有权操作的“字段号表”:s
        endif
    endfor
endscan
s=substr(s,1,len(s)-1)
数据表名称="工资"
关键字=""
接口参数表名称="接口参数表"
打印格式文件名称=""
字段号表=s                   && S控制界面情况
留下按钮号="1,2,3,4,5,6,7,10,17,18,19,23,24"   &&人事工资员有权录入与修改
字段号表1=" "
do 单记录组合框式维护

由该程序可以看出,无论工资表结构如何变化,所有数据维护操作都不会受到影响,无须修改代码,也无须重新编译,原系统使用不会受到丝毫影响。
类似地,打印、转存历史仓库、清零、查询等程序也都不会受到影响。(只当打印宽度过大时需要修改各字段打印宽度数据。但仍然不需要修改系统程序代码与无须重新编译)。
该系统已经投入使用,二年来虽然工资数据表结构、打印要求有多次改变,都未要求程序员到场维护,说明该系统具有强自适应性。
硕士论文与本科生论文各一篇

https://blog.sciencenet.cn/blog-2551-4315.html

上一篇:部件置疑-----一周评论汇编
下一篇:单数据表查询部件设计
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-5 10:22

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部