收藏 分销(赏)

人事管理系统分析报告.doc

上传人:人****来 文档编号:9853817 上传时间:2025-04-10 格式:DOC 页数:26 大小:280.04KB 下载积分:10 金币
下载 相关 举报
人事管理系统分析报告.doc_第1页
第1页 / 共26页
人事管理系统分析报告.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
人事管理系统分析报告 26 2020年6月23日 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 人事管理系统分析与概述 【摘要】信息技术为企业的发展提供了机遇, 也带来了挑战。如何改良企业内部经营机制, 公正、 客观、 全面、 快捷地评估员工的业绩, 实现以人为本的经营战略, 提高人事管理工作的效率, 使人事管理员有更多的精力去做人力资源分析、 研究和开发工作, 是企业立足发展, 开拓未来, 领先同行业的关键。本文叙述了一个人事管理系统形成的全过程, 包括部分演示。 【关 键 词】RAD、 OLE、 powerbulid 8.0、 sql server 1引言 随着计算机技术、 网络技术和信息技术的发展, 越来越多地改进着现代人的观念。网络办公自动化系统是计算机技术和网络迅速发展的一个办公应用解决方案, 它的主要目的是实现信息交流和信息共享, 提供协同工作的手段,提高办公的效率,让人们从繁琐的有纸办公中解脱出来。现在中国的许多的机关单位的人事管理水平还停留在纸介质的基础上, 这样的机制已经不能适应时代的发展, 因为它浪费了许多人力和物力, 在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。 基于这种情况, 我研究开发了这套人事管理系统, 希望这套系统能为学校的人事管理带来更多的方便。 2 系统需求分析及可行性研究 2.1系统需求分析 人事管理系统能够实现功能包括"人事信息维护"、 "数据查询"、 "统计报表"、 "系统维护"。 该系统应该提供人事信息的录入( 修改) 、 删除、 统计; 人事常见的数据查询( 包括各种复杂查询) ; 各类人事统计报表的设计、 生成、 表式的导入和导出、 打印; 用户账号权限的设置、 管理。 2.2可行性研究 人事管理一般是对人事基本信息的管理, 因此在数据库模式定义中能够将人事基本信息定义在一个表中, 这样对数据的增加、 修改、 删除、 查询、 统计操作处理起来都相对简单。统计报表的导出能够利用OLE( 对象的连接与嵌入) 这项成熟的技术来实现。打印功能完全能够根据开发工具自带的属性灵活的实现。用户账号权限的设置、 管理能够在数据库中建立一张独立的表来实现, 人事系统将根据用户不同的权限设置不同的操作功能。 对于开发工具我选择powerbuild8.0 + sql sever 。因为PowerBilder作为一种可视化的、 面向对象的快速应用开发(RAD)工具, 内置了包括数据窗口在内的多种对象类, 可方便的访问数据库, 它与Sql Server结合, 使开发应用程序这项艰辛的工作就象堆积木那样简单方便。另外, PowerBilder有多个版本以支持多平台, 其在某一平台下开发的代码, 可容易的移植到另一平台上, 只需重新编译即可。因此人事管理系统运行于Windows系统是没有问题的。同时SQL Server 使用了工业界最先进的数据结构, 能够为要求最苛刻的Web应用和企业应用提供高度的可扩展性和高可靠性。微软提供了许多技术和工具, 作为数据库系统的标准集成组件。而且, 经过巧妙的设计以及自动调整, 自动管理特性, SQL Server 使客户能够更快, 更容易的享受所用这些最先进的Web和分析技术所带来的好处, 能够快速提交应用, 从而赢得竞争上的优势。SQL Server 提供了重要的安全性方面的增强, 保护防火墙内和和防火墙外的数据, 支持强有力的, 灵活的, 基于角色的安全, 拥有安全审计工具, 并提供高级的文件加密和网络加密。SQL Server 在TPC-C测试中在所有平台下都创立了新的世界纪录。 3 系统规划 3.1项目规划 人事管理系统是一个典型的数据库应用程序, 它分为数据的录入、 数据的删除、 数据的修改、 数据的查询、 数据的统计分析、 账号的管理、 日志的管理八部分组成。具体可分为数据录入模块、 修改删除模块、 查询模块、 统计模块、 报表打印模块、 账号管理模块、 日志的管理模块组成, 另外还有一特殊系统模块。现规划功能模块如下: 3.1.1数据输入模块 该模块的主要功能是负责输入数据, 因此该模块的设计出发点应从方便用户操作的角度出发,如:非法数据输入出现错误提示等, 另外一些较固定数据可让用户从下拉框种选择, 不必自己输入。 3.1.2 数据查询模块 用户能够直接快速地查阅和打印系统中的员工个人信息( 如人员情况、 部门情况、 科室情况、 职称评定、 在职情况和决策支持等信息) ; 也能够做出各种复杂的查询, 用户可根据任意字段进行查询, 包括多条件的与和或运算, 为领导作出准确判断提供数据的支持。 3.1.3数据删除修改模块 修改删除模块一般也是数据库中必须有的一个模块, 因为在输入数据过程中难免会有出错的时候。当修改删除涉及到多个表时, 本系统将做出判断并给出提示及相应处理, 以保证数据的完整性及一致性。 3.1.4数据统计分析模块 该模块将对数据进行统计, 包括分组统计, 二维表统计及饼图统计。各种统计结果都应该能够打印。 3.1.5报表打印模块 数据的打印也是系统不可或缺的模块, 打印页面的大小及上下左右的边距应由用户自己自由设置。也能够将报表导入到word或者excel中, 由用户自己设定打印方式。 3.1.6账号管理模块 实现了对用户分组管理, 而且可对用户的数据访问权限、 功能操作权限进行设置, 大地保证了操作的安全性、 严谨性及保密性。 3.1.7日志管理模块 系统将用户名, 操作时间, 操作内容都记录下来, 然后写到数据库中。这样能够知道那个用户什么时间作了什么操作, 更好的维护了系统的安全性。 3.2系统流程图 保存用户对数据库所作的操作, 而且写入日志表中 退出系统 数据查询 基本信息模块 部门信息模块 科室信息模块 登陆系统 人事管理系统 编制信息模块 日志信息模块 数据增加 数据删除 数据修改 数据统计 日志管理 账号信息模块 基本信息录入 账号管理 数据录入 3.3规划数据库 数据库的概念 数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表示信息, 简而言之, 数据库就是信息的集合。计算机的数据库能够分为两类: 非关系数据库( flat-file) 和关系数据库( relational) 。关系数据库中包含了多个数据表的信息, 数据库含有各个不同部分的术语, 象记录、 域等。 数据库之间的关系指明两个库之间共享一个共同的关键字值。一个连接是指一种虚拟的表, 这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的, 关键字段用于在相互连接的不同表中查找匹配的记录。一个更高级的连接形式称为自连接。这种连接是指一个表被连接到它自己的一个字段, 或在不同的记录中由重复数据的组合字段。数据库中有三种不同类型的关键字: 主关键字、 组合关键字和外关键字。在表中使用的关键字类型用于描述库表示什么以及在数据库中如何与其它的库建立关系。 根据系统规划和上面的理论: 可将该数据库信息分为人事基本信息, 职称变动信息, 职务变动信息, 职别变动信息, 学习情况信息, 工作变动信息, 学习情况信息, 科室名称, 部门名称九个主题, 也就是说至少要九个表, 另外还有部分系统编码表。 4系统设计和实现 4.1 数据分析与编码设计 数据分析主要是分析各种数据的用途及相互之间的关联,分析数据的类型、 数量发生频度和使用频度, 并具体弄清楚每个数据所需的范围和位数及来源的时间性, 为数据库、 文件设计及输出、 输入设计提供依据, 也为制定合理的数据处理方法提供依据。 编码是一项基础工作, 编码必须唯一, 编码设计的目的是为了便于数据的存储和检索, 提高处理的效率和精度, 节省处理时间和减少存储空间且方便使用。 4.2 数据库设计 本系统新建一个数据库(rsgl.dbf),加强完善对人事系统的管理。 4.2.1 理论依据 一般来说,一个应用程序的数据结构是实现该程序的关键因素,SqlServer关系数据库模型, 是以关系集合理论中重要的数学原理为基础的, 经过定义创立该集合的很少一些规则, 即可方便地处理一些数据, 这种技术被称为数据规范化。 .第一范式(1NF):消除重复字段和非原子的值。 .第二范式(2NF):要求每一个字段都依赖于主关键字段的每一部分。 .第三范式(3NF):要求所有非主关键字都只依赖于主关键字段。 确定字段原则: 根据表中存储信息的不同,表中所需的字段也不一样,在确定所需字段时有下列方法可供使用: .描述不同主题的字段应属于不同的表,经过定义之间的关系,能够将多个表中的字段进行数据组合,生成各种表单或报表。 .不要在表中存储经过推导或计算能够得到的数据。 .收集所需的全部信息。应全面检查书面的表单和报表, 确定所需的数据都已包括在所设计的表中或可由这些表计算出来。 .以最小的逻辑单位存储信息。应尽量把信息分解成比较小的逻辑单位。 .对于主关键字段,SqlServer不允许其有重复值或NULL 值。 确定字段数据类型规则: 在实际选择数据类型时,应结合字段的自身情况并考虑以下几点: .该字段用于存储什么类型的值 .要对字段中的值执行什么类型的运算 .是否要用字段进行排序或筛选 .是否用字段对记录进行分组 4.2.2数据库模式定义 根据需求分析本系统一共定义了12个表, 分别为人员基本信息表( T_Rsxx) 、 部门表( T_Bmxx) 、 科室表( T_Ksxx) 、 职称变动表( T_Zcbd) 、 职务变动表( T_Zwbd) 、 职别变动表 ( T_Zbbd) 、 学习情况表 ( T_Xxqk) 、 工作变动情况表( T_Gzbd) 、 教学经历表( T_Jxjl) 、 编制信息表( T_Bzxx) 、 人事管理日志表( T_Rsrz) 账号管理表( T_Zhgl) 。其中人员基本信息表与职称变动表、 职务变动表、 职别变动表、 学习情况表、 工作变动情况表、 教学经历表经过字段rybh相关联, 构成了人事的全部信息。人事管理日志表保存每次用户登陆系统后所作的一切操作。账号管理表保存所有用户的信息, 包括用户名, 口令。编制信息表保存了12个表中的汇总信息, 包括部门编号、 政工人数、 行政人数、 会统人数、 教学人数、 科研人数、 出版人数、 开发人数、 资料人数、 实验人数、 技术人数、 卫技人数、 中幼教人数等等。部门表包括了本系统的所有部门, 科室表包括了本系统的所有科室。 以下是数据库表结构的图形表示。 4.3模块设计 4.3.1数据录入模块的设计 经过数据窗口的insertrow(0)函数, 先插入一条空记录, 然往空记录中输入数据, 保存到数据库中即可。对于不同的表, 保存方式不同。人员基本信息表的新记录保存使用数据窗口的update()函数完成。在保存之前做安全性检测, 以防不合理数据入库。 其它表的输入与基本信息表类似。其中科室表的新记录保存使用数据窗口的update()函数完成。剩余的表由于它们的主键都是行号(int类型的), 在数据库中把它们的Identity属性都设为了yes, 因此这些表的新记录保存只能用insert into 表名( ) values()语句来完成。 4.3.2数据删除模块的设计 经过数据窗口的deleterow(currentrow)函数, 删除一条当前记录, 保存到数据库中即可.人员基本信息表中的一条记录被删除, 与其关联的其它表中的信息也将被删除, 这一目的是为了保证数据的一致性和完整性, 此表的记录保存使用数据窗口的update()函数完成。其它表中的相关信息被删除是经过”delete from 表名 where 条件”sql语句完成的。 4.3.3数据修改模块的设计 如果修改一条当前记录, 先检查一下数据是否合法, 然后经过数据窗口的update()函数保存到数据库中即可。如果人员信息的人员编号被修改, 其它关联表中的人员编号也作相应的修改, 其目的是为了保证数据的一致性和完整性。人员信息的修改的格式式freeform其它的表的修改与其操作类似, 只是显示风格不同而已 4.3.4数据查询模块的设计 数据的查询是经过sql语句实现的, 系统使用一个数据窗口显示查询条件, 包括”名称” ”匹配” ”数值” ”条件”。单击”增加”能够在条件框中增加一个空条件, 然后按照用户的要求添加合适的条件, 其中”名称”字段可选择, 包括了基本信息表中的所有字段, ”匹配”字段可选择, 包括”>,<,=,>=,<=,<>”, ”数值”字段可根据”名称”字段添加不同的值, ”条件”字段是为了做多条件查询设置的, 包括”And Or”。当用户做了一次查询之后, 能够修改”数值”字段的值做下一次查询, 也能够单击上面的”删除”一个查询条件, 以适应不同的查询, 或者单击”全删”删除所有的查询条件重新安排查询。当查询条件输入完毕以后, 单击”确定”就可按照相应的条件进行查询了, 查询的结果显示在右上方的基本信息框中。基本信息框中显示了基本信息表中的所有字段, 能够根据用户的要求选择要显示的字段。 4.3.5报表打印模块的设计 数据的打印包括: 页面设置, 打印预览, 打印三部分, 其中打印的参数是经过结构体来传递的。结构体的定义如下: struc_printinfo from structure integer i_marginleft //到左边沿的距离 integer i_marginright //到右边沿的距离 integer i_margintop //到上边沿的距离 integer i_marginbottom //到下边沿的距离 integer i_orientation //横打还是纵打 integer i_papersize //纸张大小 integer i_papersource //纸张来源 boolean b_OK //是否单击了”确定” 页面设置: 页面设置的参数是经过结构体穿传送的, 界面见下图 打印: 页面设置完成以后就能够打印了, 打印的窗口如下图: 打印预览的基本思想: 打开预览窗口时, 先把要预览的数据窗口中的数据传送到到预览窗口, 然后设置预览窗口属性完成预览。预览界面见下图: 4.3.6账号管理模块的设计 账号管理是按照用户的权限设定的, 高级用户能够分配用户、 修改其它用户的权限。中级用户和普通用户只能修改自的口令。这些操作能够利用数据窗口的基本属性就能够实现。具体界面如下图: 4.3.7日志管理模块的设计 在每次退出系统的时候, 查找一下数据窗口的缓冲区就能够获得用户对数据库的操作, 包括数据的增加、 删除、 修改。然后系统将用户名, 操作时间, 操作内容都记录下来, 写到数据库中。 4.4关键技术 4.1导入word函数 导入word函数基本思想: 建立ole对象连接word,获得要导入数据窗口的行数和列数根据数据窗口的行数和列数获得数据窗口中的数据, 然后一个数据一个数据的写入到word中, 最后断开ole对象连接。 具体代码: //========================================================== // Function - f_exportto_word //---------------------------------------------------------- // Description: 将数据窗口中的数据导出到word文件中 //---------------------------------------------------------- // Arguments: // datawindow datawindow // <description> 要保存的数据窗口 //---------------------------------------------------------- // Returns: (none) //========================================================== OLEObject ole_object ole_object = CREATE OLEObject //连接word IF ole_object.ConnectToNewObject("Word.Application") <> 0 THEN MessageBox('OLE错误','OLE无法连接!') return END IF ole_object.Visible = True long ll_colnum,ll_rownum constant long wdWord9TableBehavior = 1 constant long wdAutoFitFixed = 0 constant long wdCell = 12 string ls_value //得到数据窗口数据的列数与行数( 行数应该是数据行数 + 1) ll_colnum = Long(datawindow.object.datawindow.column.count) ll_rownum = datawindow.rowcount() + 1 ole_object.Documents.Add() ole_object.ActiveDocument.Tables.Add(ole_object.Selection.Range, ll_rownum, ll_colnum) string ls_colname integer i,j for i = 1 to ll_colnum //得到标题头的名字 ls_colname = datawindow.describe('#' + string(i) + ".name") + "_t" ls_value = datawindow.describe(ls_colname + ".text") ole_object.Selection.TypeText(trim(ls_value)) ole_object.Selection.MoveRight(wdCell) next datawindow.setredraw(false) ole_object.Selection.MoveLeft(wdCell) for i = 2 to ll_rownum for j = 1 to ll_colnum datawindow.scrolltorow(i - 1) datawindow.setcolumn(j) ls_value = datawindow.gettext() ole_object.Selection.MoveRight(wdCell) ole_object.Selection.TypeText(ls_value) next next datawindow.setredraw(true) constant long wdFormatDocument = 0 //保存新建的文档 ole_object.ActiveDocument.SaveAs("sample.doc", 0,False,"",True,"",False,False,False, False,False) //断开OLE连接 Ole_Object.DisConnectObject() Destroy Ole_Object 4.2导入excel函数 导入excel函数基本思想: 建立ole对象连接excel,获得要导入数据窗口的行数和列数, 根据数据窗口的行数和列数获得数据窗口中的数据, 然后一个数据一个数据的写入到excel中, 最后断开ole对象连接. 具体代码: //========================================================== // Function - f_exportto_excel //---------------------------------------------------------- // Description: 将数据窗口中的数据导出到excel文件中 //---------------------------------------------------------- // Arguments: // datawindow datawindow // <description> 要保存的数据窗口 //---------------------------------------------------------- // Returns: (none) //========================================================== OLEObject ole_excel, xlsub ole_excel = CREATE OLEObject int li_ret li_ret = ole_excel.ConnectToObject('Excel.Application') if li_ret <> 0 then li_ret = ole_excel.ConnectToNewObject('Excel.Application') if li_ret <> 0 then MessageBox('OLE错误','OLE无法连接, 请返回重试! ') end if ole_excel.Visible = false end if ole_excel.Application.Workbooks.add() ole_excel.Application.Visible = true long i, j, ll_cols, ll_TargetRow,k string ls_colname, ls_title //列名, 列标题 string ls_data, ls_syntax //数组记录各显示列的值, 取各列 string array_title[], array_col[] //以数组记录非隐藏列的列标题 string ls_xzb //X坐标 string ls_x[] ll_cols = Long(datawindow.Describe("DataWindow.Column.Count")) //记录总列数 xlsub = ole_excel.Application.ActiveWorkbook.Worksheets[1] //得到显示字段的列标题和坐标 for i = 1 to ll_cols ls_xzb = datawindow.Describe("#" + String(i) + ".x") if ls_xzb <> '!' and ls_xzb <> '?' then ls_colname = datawindow.Describe("#" + String(i) + ".name") + "_t" ls_title = datawindow.Describe(ls_colname + ".text") k++ array_title[k] = ls_title //记录其列标题 array_col[k] = datawindow.Describe("#" + String(i) + ".name") ls_x[k] = ls_xzb end if next //按坐标值从小到大进行冒泡排序 string ls_temp for i = 1 to upperbound(ls_x) - 1 for j = i + 1 to upperbound(ls_x) if long(ls_x[i]) > long(ls_x[j]) then //列标题 ls_temp = array_title[i] array_title[i] = array_title[j] array_title[j] = ls_temp //列名 ls_temp = array_col[i] array_col[i] = array_col[j] array_col[j] = ls_temp //X坐标 ls_temp = ls_x[i] ls_x[i] = ls_x[j] ls_x[j] = ls_temp end if next next //显示标题带 if upperbound(array_title) > 0 then for i = 1 to upperbound(array_title) xlsub.Cells(1, i).Value = array_title[i] xlsub.Cells(1, i).Borders.LineStyle = 1 next end if long ll_total,ll_pos //输出各显示列的值 ll_total = datawindow.rowcount() ll_TargetRow = 1 for i = 1 to ll_total ll_TargetRow ++ ll_pos = i // showprgressbar(ll_pos,ll_total,'正在生成数据, 请稍等...') for j = 1 to upperbound(array_title) ls_syntax = "Evaluate('LookUpDisplay(" + array_col[j] + ")', " + String(i) + ")" ls_data = String(datawindow.Describe(ls_syntax)) //取列的值 xlsub.cells[ll_TargetRow,j] = ls_data xlsub.cells[ll_TargetRow,j].Borders.LineStyle = 1 next next //将标题带灰显 ole_excel.Rows("1:1").Select ole_excel.Selection.Font.ColorIndex = 1 ole_excel.Selection.Interior.ColorIndex = 15 ole_excel.Range("H8").Select //灰显完毕 ole_excel.DisConnectObject() Destroy ole_excel 参考文献 1.崔巍 编著, 《pb7.0数据库应用系统开发教程》清华大学出版社 2.王守华 卢嘉 编著, 《pb7.0开发指南》清华大学出版社 3.王冠科技 编著, 《pb7.0时尚编程百例》机械工业出版社 4.闪四清 编著, 《SQL Server 系统管理指南》清华大学出版社
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服