案例7:一个公司的人事管理系统 一、系统分析 ?1.初步可行性分析 ??? 人事档案属于基本固定型信息,主要工作量在于数据库的建立。一旦档案库建好,更新与维护的任务不大。人事干部无需付出过多的经常性劳动,便可从系统中得到极大的方便。因此该系统可以得到用户的认可。该公司的IBM PC-XT机拥有10兆硬盘,有足够的空间存储人事档案。单色图形接口板和M2024打印机又为中文输出提供了有利条件。因此可以认定该系统是可行的。 ?2.旧系统的调查 ??? 该公司人事部门的管理比较规范,档案表格的栏目填写十分健全。 每个干部档案中载有36项内客,其中大多为字符型。该公司共有干部800余名,分布在十个单位和40个部门之中。人事系统的用户主要有三类。一是人事干部要定期和不定期地打印出各种报表(20种左右),另一是公司领导有时要查询某些有关人事的具体问题(查询内容也有20种左右),再有就是局级领导希望通过中央计算机查询公司中的人事情况(该口的各公司微机均已与局级中央计算机接通联成网)。所以该系统的主要功能就是打印报表和屏幕查询两项。当然也必不可少地应该有新人员的追加、旧人员的删除,档案修改等功能。 ?3.提出初步模型 ?? 鉴于人事系统对检索能力有较多要求,对运算能力要求很少的特点,决定选用dBASE -Ⅲ数据库管理系统作为编程的工具。设想新系统具备的功能如图4-2所示。其中数据输入尽量使用代码,减少汉字键入工作,输出不允许出现代码,应全部转化为汉字。管理库功能保证用户可以随时增加、删除或更动单位名称、部门名称和现岗名称,也可以复制备份档案。  图7-1? 人事管理系统的功能  ??? 特别应该考虑到的问题是一定要设法实现随机咨询和随机打印。 由于人事部门的查询途径相当多,不可能全都事先估计到。打印报表的格式也会随时发生变化,不能限制在指定的若干种固定格式之内。因此,必须提供给用户一种机会,使他能够临时自行设计一种报表格式,临时确定一种查找途径(例如,临时要查一下住在中山路上名字叫xx兵的人)。为此,我们特别增添了这两个功能,要求编程人员充分利用dBASE Ⅲ中的宏代替函数,实现上述随机查询和随机打印的功能。 二、系统设计 ?1.代码设计 ??? 为了减少汉字输入,将大量的字符型内容首先应转换为代码。 为此列出了若干张代码表,以部门代码为例。 字段名称:部门 字段代码:BM 内容个数:40个 代码位置:2位 代码含义: 00——编号 01——党办 02——组织 03——宣传 38——搅拌站 39——小卖部 ??? 其它诸如:职称、文化程度、现岗、单位、政治面目、外文水平、性别、人员类别等也都有类似的代码表。 ?2.输出设计 ??? 该系统共有35种输出(17种屏幕输出,18种打印输出)。 每一输出均应设计出相应的内容及格式。表7-1给出了打印输出中“年龄结构分析报表”的格式。其它输出也均有类似设计。 表7-1? 年龄结构分析报表格式 年龄 性别 政治面貌 文化程度 人员类别 所有制   男 女 党 员 团 员 大本 大专 中专 高中 初中 小学 书记经理 正副科长 技术干部 政工干部 行政干部 全民 集体  25岁以下                                    26-30岁                                    31-35岁                                    ... ... ...                                      合计                                    14位 10位 10位 34位 28位 10位  ??? 在输出设计中有两个例外,那就是随机查询和随机打印。这两个功能没有固定的输出内容和输出格式,它们是与输入设计紧密相关的。我们设计了如下的用户工作方式:首先根据某单提示(共三十六个选择项)选定要查询的几个条件(单项或组合),然后再选定要输出的内容。当选定的输出内容过多,超过打印机所允许的132列(或264列)时,计算机将拒绝接受。当选定的输出内容不足以填满132列时,计算机则自动调整各项之间的列距,以保证输出格式的美观.当然,这种输出的速度不如固定查询途径和固定打印格式快。但是它的灵活性却得到了用户的极大欢迎。 ?3.输入设计 ??? 增加、删除和修改都牵涉到输入问题,数据库管理也要键入一些新的信息。 本系统全部采用随机填表式的键盘输入方式。例如,为了输入一张人事档案,首先系统在屏幕上显示出一张与纸上表格一样的表格.用户依次(或不依次)地键入相应栏目内的内容(大部分只须键入代码)。设计中为每一个输入都设计了画面格式,将来程序员依此格式去编制程序。为了防止输入时发生错误,对大多数项目均应设置保护措施。例如,输入的序号与旧职工重号,“出生年月”一栏误填为“十三月”,或者“性别”一栏填作“3”(1表示男性,2表示女性)等,系统均应予以拒绝。除此而外,每个栏目输入完成后,系统应再现该表格,要求用户做出确认,发现错误时仍可修改。应该指出,保护措施越多,响应时间就会越慢,用户使用起来也会出麻烦(例如,每份档案都要予以确认,当然会多敲键)。系统设计时必须在保证输入与方便用户之间加以兼顾。例如,可以用回车来确认的内容就不要再用“YES/NO”方式向用户提问。 ??? 输入时的另一个问题是备份文件的修改问题。为了防止意外损坏, 应该留有备份文件。但是每更动一次都重新备用十分繁琐,因此考虑使用硬盘、软盘两个文件同时修改的做法。每次增添、删除或修改记录时,都要求在驱动器A:放有相应的软盘(800名干部的档案由5张软盘来存放)。系统在硬、软二盘的文件上同时进行更改,如有一方更改失败,则宣布更改无效。软盘还应再复制留底,这样进行起来十分容易,它即保证了文件的安全性又不会破坏一致性。 4.文件设计 ??? 该系统共有8个数据库文件和16个索引文件。 数据库文件中包括三个工作数据库,它们分别为;单位代码/名称对照,部门代码/名称对照,现岗代码/名称对照。它们用来对输入代码之间翻译(其它代码的翻译对各公司有通用性,也都比较简单,因此放在程序中执行)。档案文件占用了另外三个数据库。最常用的内容置于主文件库内,便于经常使用。其它内容置于次文件库内。“个人简历 ”一栏含有较多的字符型内容,可以使用Memo型字段。但由于Memo字段面向用户的能力较差,故仍使用字符型字段。每条简历占一个记录。又由于每个人的简历条数不同,所以把“个人简历”一栏专门制成一个简历库文件,由序号标明该条简历的归属。 ???  表7-2??????????? 文件名 ADJ.SFW 所存内容 档案中的主要内容  记录个数 800左右 记录长度 150字节  ??? 还有两个数据库的结构与主、次档案库完全一样,用来存放被删除人员的记录,以备需要时查用。 ??? 每个库文件都有一张如表7-3所示的结构表。 文件结构???????????????????  表7-3??????????? 字段名 类型 宽度 含义 索引文件名  LM1 LM2 LM3 LM4 ... ... ... LM23 LM24 C C C C ... ... ... N C 4 8 2 2 ... ... ... 6.2 1 序号 姓名 单位 部门     工资 所有制性质 XH1 无 DW BM     GZ 无    ?5.处理流程设计 ??? dBASE Ⅲ十分适宜于模块式编程,因此整个系统应被合理地分成若干模块。 模块的划分是与图4-2所示的功能结构一致,主从模块之间采用菜单式调用方式.但各模块的过程文件在必须明确规定,不得任意更改。为此,应在图6-11的各个方框下方标明相应的过程文件名称。 ??? DBASE Ⅲ的一个缺点是处理速度较慢。 因此在程序设计中应将提高响应速度放在首要位置。哪怕为此要牺牲一些存储空间或使程序变得冗长重复.因此作出了以下规定: (1)子程序调用一律使用过程文件,特别对于那些需要反复调用的程序,禁止用开关命令文件的方式多次与外存发生联系。 (2)十八种打日报表的格式基本上是三大类,同类报表格式相近。为了精炼程序,本可以使用一些宏代替技术而统一处理,但为保证响应速度,宁可分别编写,使得程序虽有重复,但节省了多次进行宏代替的时间(屏幕查询也有类似规定)。 (3)在结构分析中dBASE Ⅲ本来有FILTER和 COUNT语句可供使用,但这会使得同一记录被反复访问而增大处理时间。为此,改用程序记数的方法,保证每条记录只被访问一次 。 ?6.保密性问题 ??? 人事部门的档案是要求保密的,必须设置保密措施。 DBASE Ⅲ虽然也可用“SET CONS OFF”方式填写口令。但它并不属于真正的保密措施,因为其他人可从相应程序中发现存储口令的外存变量并进而发现口令内容。为此,使用了隐含文件的方法,将本系统的全部文件变为隐含,使他人无法发现它们的文件名。 三、系统实施 ?1.程序设计和调试 ??? 程序员每人负责若干模块,分别编程和调试。 四个人用了半月左右时间完成了分段调试工作。最后由设计人员进行系统总调。以20人的记录为例,用增加记录功能依次输入,并用修改和删除程序依次修改和删除,确认这几个更改功能无误。其中发现了一些具体问题,当时予以解决。由于设计时各种规范定的较为详尽,因此没有发现需要较大修改的地方。各种输出功能的调试主要是保证格式正确。至于输出内容正确与否,需要较多的记录才可验证.因此,放在人员培训之后进行。 ?2.人员培训和数据录入 ??? 由于该公司有一名人事干部自始至终参加了开发, 他也是系统的主要用户,因此无需专门的培训。但为了一次性键入800人的记录,需要组织若干名操作员进行集中工作。对操作人员进行了一天的培训。然后借用六台同样的机器,进行数据输入。四天后, 800人的档案全部进入软盘并先后复制到公司的硬盘之上。然后,由小组中的人事干部试用屏幕查询方式,依次检查输入是否正确。发现问题时便调用修改程序予以修改。一周后,确信档案库已可以交付使用。 ??? 库中记录已达200个之后,便可进行输出调试。 各类输出均输出一、二份样品,与手工统计结果核对,结果表明程序是可信赖的,反而是手工统计往往发生错误。输出时间也大大快于手工操作,该公司人事部门很满意。 ??? 确定系统无误后,再对全体人事干部进行培训。 由于菜单式工作十分明了,三两天内可以使他们全部接受这一系统。唯一困难在于对汉字输入不熟悉。但我们认为没有必要全去从事汉字输入,只委托一人,甚至干脆由一名操作员在人事干部陪同下输入数据即可,这既保证输入速度,又减少出错的可能性。在培训期间,主管人事的经理也参加了学习,可以较熟练地在屏幕上查询他所感兴趣的内容。 ?3.编写技术文件和使用说明书 ??? 为了便于以后维护.所有的设计内容均被整理并予以保存, 同时编写了该系统的使用说明书。说明书内容包括:系统简介、硬件和软件环境、开机步骤、主菜单功能选择、增添新人员方法、修改人事档案、删除离去人员、打印各种报表、屏幕查询方式、数据库文件管理等手段。 四、系统的推广与评价 ??? 为了在全行业推广该人事管理系统,组织了另外一次人员培训。 印发了各种技术文件和使用说明书。参加培训的人员在十台同样机器上学习使用本系统。由于面向用户的能力很强,所以学起来并不吃力。三天培训便可初步掌握系统的工作。各公司人事部门将各自组织人员开展本公司的档案录入工作。由于各公司的文件结构、处理流程和输出格式完个一致,局级领导可以很容易地在高层部门的中央计算机上对某个公司的人事情况进行查询,极大地开拓了这一系统的使用范围。 ??? 该系统的开发费用微乎其微,但带来的经济利益也很难测定, 所以系统的经济评价没能进行。从用户使用情况来看,达到了设计要求。其主要原因为:1)领导重视,亲自过问;2)业务人员亲自参加三结合小组共同工作. 3)坚持系统分析和设计,在编程前进行了周密的准备工作;4)以行业为主要着眼点,可以提高系统质量,井有益推广,收到事半功倍的效果。