1、企业工资管理系统的开发402020年6月23日资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。企业工资管理系统的开发题目: 企业工资管理系统摘要: 随着经济的发展, 企业正向着大型化、 规模化发展, 而对 大中型企业, 员工、 职称等跟工资管理有关的信息随之急 剧增加。在这种情况下靠人工来处理员工的工资会有很多 不便。因此, 需要制定一个企业工资管理系统。关键字 : 管理系统 系统开发 MIS 数据库 工资管理 数据流图 第一章、 开发背景1.1、 工资管理的应用现状第二章、 系统平台的选用2.1、 数据库技术的现状与发展2.2、 数据库系统的设计原则2.3、 系统开发工具、 环境
2、的选择第三章、 工资管理系统分析3.1、 系统目标3.2、 系统可行性分析研究3.3、 需求分析第四章、 总体设计4.1、 系统功能模块图4.2、 系统功能模块的说明第五章、 详细设计与实现5.1、 数据需求分析5.2、 数据库概念结构设计5.3、 数据库逻辑结构设计5.4、 系统模块设计第六章、 系统的测试与评价6.1、 系统的特点6.2、 系统的缺点6.3、 将来可能提出的要求总 结参考文献附 录第一章 企业工资管理系统概述11、 企业工资管理系统的现状分析1.11企业工资管理的应用现状 随着中国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善, 各个行业都在积极使用现
3、代化的手段, 不断改进服务质量, 提高工作效率, 这些都在很大程度上给企业提出越来越严峻的挑战, 对企业体系无论是在行政职能、 企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此, 由于企业职工人数较多, 每一位职工的具体实际情况也不尽相同, 各项工资条款的发放, 如果没有一个完整的管理系统来进行管理, 那么势必会给管理人员带来种种麻烦, 因此类似工资管理系统之类的财务软件的开发势在必行。第二章.企业工资管理系统平台的选用2.1
4、数据库技术的现状与发展 数据库是60年代末出现的一门计算机软件技术, 到现在虽然只有三十多年的历史, 但在理论和时间上都得到了和很大的发展。现在, 数据库是数据处理的主要工具, 是管理信息系统(MIS)的核心部分。数据库系统是当今计算机信息系统的核心,是计算机技术和应用发展的关键。传统的数据库系统旨在处理永久、 稳定的数据, 强调维护数据的完整性、 一致性。数据库理论与技术的发展极其迅速, 其应用日益广泛, 在当今的信息社会中, 它几乎无所不在。以关系型为代表的三大经典( 层次、 网状、 关系) 型数据库在传统的( 商务和管理的事务型) 应用领域获得了极大成功。计算机世界报社与IBM公司联合举
5、办了21世纪数据库技术发展专家研讨会。IBM DB2的创始人Donald Haderle先生与国内著名数据库专家,就下世纪数据库发展的趋势、 数据库领域革命性的突破、 IBM DB2的应用、 数据仓库的实施、 中国数据库技术和应用的现状及趋势、 中国数据库用户的需求等问题,进行了广泛而深入的讨论。2.2数据库系统的选择原则 ( 1) 数据库系统采用易于集成的, 开放的技术。 ( 2) 产品质量优异, 可靠性高, 适于长期运行, 能支持关键应用。 ( 3) 数据安全, 保安型高。 ( 4) 能提供分布式数据库功能。 ( 5) 支持多种开发环境, 软件开发容易。 ( 6) 扩充性和升级能力强。2.
6、3系统开发工具的选择 现在市场上有很多管理系统的开发工具, 如: Visual basic、 delphi、 ASP等等, 数据库开发工具又有很多种, 如: Access, SQL Sever, Oracle等等。这些都是很出众的管理信息系统及数据库的开发工具。不过Visual foxpro6.0有着以下几项特点: Visual foxpro是microsoft公司推出的全新的pc平台关系数据库管理系统。它具有强大的性能、 无与匹敌的速度、 完整而丰富的工具、 及其友好的图形用户界面、 简单得数据存取方式、 良好的兼容性、 独一无二的跨平台特性及真正的可编译性, 是系统成为当前最快、 最完美的
7、数据库系统。不但兼容早期的dbase以及foxbase各种版本, 同时还提供了许多基于windows的崭新功能。Visual foxpro作为具有windows95兼容标志的应用软件, 具有快速开发应用程序、 面向对象和客户机/服务器的强大功能, 它是多年来出现在关系数据库方面最重要的产品。 随着桌面操作系统有windows98逐渐向windowsXP升级的发展潮流, visual foxpro必将成为今后数据库产品中的主流。Microsoft visual foxpro是一个32位的数据库开发系统, 可运行于window98和windowsxp操作系统。Visual foxpro既具有vis
8、ual系列的功能强大、 直观易用、 面向对象等优点, 又兼具windows和foxpro的长处。提供了”向导”、 ”设计器”和”生成器”等工具, 使的数据库的管理工作变的容易。Visual foxpro的易用性使初学者和那些想避免涉及foxpro复杂命令的人能很快用它来管理自己的数据库, 制作各种报表、 标签等; 增添的面向对象的编程方式等新特色, 使它成为应用程序开发人员强有力工具; 其兼容性使原来的广大Xbase用户能迅速转为使用visual foxpro;visual foxpro还能广泛地与其它许多软件共享和交换数据。正是由于其易用性、 先进性和广泛性, 使visual foxpro真
9、正做到了面向各种水平的用户。( 1) 简单, 易学, 易用快速完成应用任务 Visual Foxpro6.0提供了向导, 生成器和设计器三种工具, 这三种工具都使用图形交互界面方式, 使用户能够最简单而又最快速地完成数据操作任务。 操作向导提供了用户要完成某一项任务所需的详细地操做步骤, 在这些步骤的指导下, 用户能够一步步地很简单完成任务。例如: 此工资管理系统中的各项工资数据输入的表单就是用表单向导和生成器来制作的。 生成器也是一种具有友好界面的图形工具, 它的主要功能是在用户自己的应用程序中加入一定的控制功能, 例如列表框生成器就是一个带有标签的对话界面, 利用列表框, 生成器, 用户能
10、够在窗体中设计出一个列表框, 而且能够在这种生成器中设计一个列表框的共同特征, 如有手写输入, 能够加入到表单中去, 减少用户输入繁琐的, 大量的工作, 用户只要从列表下拉框中选择即可, 本系统在查询设置均使用了这种方法。如果用户想突破向导和生成器本身的限制, 想要自己对应程序进行更复杂或更灵活的控制, 能够利用另一种Visual Foxpro6.0提供的方便有效的工具设计器, 设计器也提供了一个友好的图形应用程序开发接口, 经过它对用户能建立起自己的应用程序。例如: 用户能够用窗体设计器定义和生成一个窗体, 用数据表设计器定义和生成一个数据表。使用方便的工具栏 象许多其它Microsoft产
11、品一样, Visual Foxpro6.0也给用户提供了使用方便的工具栏, 工具栏里有许多按钮, 她们代表着菜单里的某些选项。一般来说, 用户经常执行的操作或使用的对象多对应一个按钮, 用户能够经过选择这些按钮方便而迅速地完成操作, 而不必经过菜单选项。不编程而建立应用程序界面 Visual Foxpro6.0提供的窗体设计器是一种功能强大的工具, 用户能够不编程或使用很少的代码来实现友好的交互式应用程序界面以及对界面的控制。例如; 用户能够用栅格控制很容易地建立一对多的窗体; 用户只需把一个数据表拖到一个窗体上就能够了。也能够利用页格式控件来建立有标签的对话框话或用户自己的生成器界面。用项目
12、管理器统一界面 Visual Foxpro6.0提供的另一高效易用的工具是项目管理器。经过项目管理器, 用户能够集中地管理数据, 文档, 类库, 源代码等各种资源。例如用户能够建立和更新数据库, 设计或改变窗体和报表, 定义或改变类库, 生成或重新生成自己的应用程序。另外, 用户也能够在项目管理器中使用Visual Foxpro6.0提供的简单而有效的其它工具, 如向导, 生成器, 工具栏等。所有这些, 使用户能够对工作进行集中管理而又简单有效。( 2) 功能更强大 Visual Foxpro6.0比以前的数据库管理系统具有更强大的功能。它经过使用快速查询技术和对系统的优化而使用户最大限度地体
13、会到Visual Foxpro6.0快速而又功能强大的优点。具有面向对象编程的能力 Visual Foxpro6.0在支持标准的Xbase传统编程方式的同时, 也提供了完全的面向对象编程的能力。在Visual Foxpro6.0的对象模式下, 用户能够利用所有的面向对象编程特性, 这些特性包括继承, 封装, 多态性以及分类, 她们都作为用户所熟悉的Xbase编程语言的扩展集而实现。 Visual Foxpro6.0提供了一套基类, 包括窗体、 工具栏、 页格式等, 使用这些类, 用户能够建立基本的窗体、 工具栏、 页格式, 这样就能够一方面减少用户编程工作量, 另一方面又加快程序开发过程。 再
14、进一步, 用户能够将自己定义的类再进行分类, 这样可利用用户已有的代码或窗体。例如, 用户能够将基本的窗体类再进行分类而建立自己的子类, 这个子类将根据用户的要求自动地在应用程序中建立起一个用户希望看到的窗体, 它的结构是由用户分类来决定的。 Visual Foxpro6.0类模式能够在用户应用程序中对对象进行深入而全面的控制, 例如用户在设计时可用窗体设计器对窗体中的对象进行完全的控制, 二类模式下当用户运行程序时客队窗体中的表现和行为提供相同的控制。 在Visual Foxpro6.0中, 用户能够用类设计器交互式地建立一个类, 或者用DEFINE CLASS命令来编程建立。更容易处理事件
15、。 Visual Foxpro6.0包含一种事件模式, 它能够帮助用户自动地处理事件。在这种事件模式下, 用户能够获取并控制所有标准的WINDOWS Visual Foxpro6.0事件, 例如鼠标的移动, 经过处理这一事件, 用户能够拖动和放置一个对象, 用户能够用两种方式来控制事件: 一种是经过特性窗体来可视地控制; 另一种是经过Visual Foxpro6.0的编程语言来控制这两种方法都能使用户很容易的建立起完全的事件驱动应用程序而不用考虑READ层次及浏览窗口限制, 也不用编写事件处理程序。最优化系统 Visual Foxpro6.0能经过优化用户的实际来提高自身的性能。在所有的优化措
16、施中, 做有效的方法是尽可能多地增加用户的扩展内存或减少被其它程序所占用的内存。其余的提高Visual Foxpro6.0性能的措施包括加快启动速度和优化设置指令。使用快速查询技术 快速查询技术是一种专用的数据查询技术, 她能够迅速从数据库中选择出一组满足用户要求的记录。使用这种即使能将数据查询所需的时间大大缩短, 这样能够极大的提高数据查询效率。真正的数据库概念 以前的Xbase软件中称.DBF文件为数据库, 使人容易产生一个数据库就是一个二维表的错误认识。而visual foxpro 废除了以前Xbase 不合理的数据库概念, 采用独特的数据库容器, 为用户管理应用系统中的表、 查询、 表
17、单、 报表、 程序等数据提供了方便, 支持长数据库文件名和字段名设置的显示标题, 为字段指定默认值, 设置字段级和记录级的有效性规则, 设置表的插入、 删除和改变记录的触发程序得集合, 合理得体现了关系型数据库的思想, 与关系数据库理论统一了起来。新的数据库把有关系的表封装在一起, 关系清晰、 合理且处理方便。 Viual foxpro 由于使用了这种真正的数据库概念, 使得它数据库结构与sql等标准结构统一, 从而使数据库的实现更加标准、 合理、 方便。可视化编程技术 Visual foxpro用于visual c+、 visual basic同样的编程技术, 这是她取名为Visual fo
18、xpro的原因。可视化编程技术给人一种所见即所的的感受, 在您编辑屏幕表单、 报表、 菜单时, 能够直接运行, 不必来回调试, 极为方便。新增许多命令和函数, 功能大大加强, sql语句更加丰富 增加了7种新的字段类型: 整型、 货币型、 日期时间型、 双精度型、 通用型、 二进制型和二进制备注型。在结构化的复合索引中能够建立4种类型的索引: 主索引、 候选索引、 普通索引和唯一索引。 允许在表中使用空值null, 以保证与采用sql标准的数据库管理系统的兼容和数据共享。用32位方式Visual foxpro使用32位方式, 其运算速度、 存储能力大大提高。 第三章.企业工资管理系统分析3.1
19、系统目标本系统要对企业工资管理的日常的工资发放进行数据输入, 并对各项工资条款进行计算。汇总各项数据生成员工个人台帐, 打印工资报表。采用用户名, 密码安全机制, 分用户权限登陆访问, 保证系统资源不受人为因素的干扰。 3.2系统可行性分析研究 可行性研究的目的使用最小的代价在尽可能短的时间里确定问题是否能解决, 经过复杂系统的规模与目标, 研究与此类似的系统后, 我们具体从下面两个方面考虑。 技术上的可行性。由于对企业工资管理系统这一类的企业财务系统进行开发已有一定的时期, 有很多成功的实例, 技术基础也已经非常雄厚, 因而技术上的准备应该不成问题。经济上的可行性。由于企业工资管理系统是一个
20、比较小型的系统, 是由我一个人进行开发的, 因此从人力、 物力、 财力方面来说都是可行的。3.3 需求分析对用户需求的分析应该全面、 深入、 发展, 全面是指考查由管理的信息是否有纰漏, 必须保证各静态、 动态信息的完全; 深入是指对信息的内容、 结构、 含义、 变换、 生存周期的分析和认识; 发展是指对信息未来发展变化的预测, 因为信息在某个系统、 机构内的变化往往存在着自身特有的发展规律, 需求分析应该预见这种规律, 否则就会缩短的使用寿命。为了保证需求分析的完备性, 就必须保证需求分析的时间。1 系统业务流程图经过对企业原先手工进行员工工资管理业务的情况, 能够设计出它的业务流程图,如图
21、3-1所示。用户登录 数据输入 工资计算 存储数据 工资查询 报表汇总 图3-12 系统的功能要求。整体结构合理, 风格一致, 模块化结构, 界面清晰, 接口灵活, 操作简便。开发方法, 文档规范化, 便于管理, 可扩充。完善的数据输入, 维护, 输出。自检性能高, 用户误输、 错输均有提示。容错性能高, 某个用户的操作错误不会引起整个系统的瘫痪, 每一功能的操作都有信息提示以免重复操作, 错误操作有警告, 以便用户及时改正。3.4 数据流程图: 1.管理系统的数据流程图符号如图32所示 外部实体 处理 数据流 数据存储 图32 数据流程图的符号2.本系统的数据流程如图3-3所示系统管理员职工
22、号考勤工资固定信息员工基本信息员工基本信息管理 工资计算员工基本情况查询工资基本设定工资汇总 打印报表员工个人工资查询上级主管部门 录入分类 图3-3企业工资管理系统的数据流程图第四章.系统总体设计本部分主要介绍系统要实现的功能, 搭好设计的总体框架, 使我们对要开发的系统有一个系统、 全面、 确切的认识。4.1 系统功能模块图本系统在设计时采用结构化程序的设计方法, 系统的总体结构采用菜单来调用表单, 利用表单来对信息进行管理、 数据加工、 信息查询、 系统维护等工作, 系统的功能模块本结构图如图5-1所示。企业工资管理系统 图4-1 系统功能模块图4.2功能的说明本系统大致分为如下四大功能
23、模块。1员工信息分为员工信息浏览和员工信息查询: 在员工信息浏览子模块中, 能够对员工的编号、 姓名、 性别、 岗位、 工龄、 工资等级等信息进行浏览, 并能够对员工信息进行增加记录, 修改记录, 删除记录等操作; 在员工信息查询模块中, 可按员工号或员工姓名进行查询。2工资基本设定包括对基础工资、 岗位工资、 工龄工资的设定。基础工资的设定包括工资等级、 工资额的设定, 能够对工资等级及相应的工资额进行修改、 添加、 删除。岗位工资的设定包括岗位名称、 岗位工资额的设定, 能够对岗位名称及相应的岗位工资额进行修改、 添加、 删除。工龄工资的设定包括工龄、 工资额的设定, 能够对各个工龄段及相
24、应的工龄工资额进行修改、 添加、 删除。3工资汇总在工资管理中, 要分别输入每一个员工的各项工资条款, 这样才能运用计算机技术来管理好员工的工资发放情况, 其中包括: 员工基本情况, 员工基本工资情况, 员工岗位工资情况, 员工工龄工资, 工资综合。 4个人工资查询此查询分为按职工姓名查询、 按职工号查询。5退出此功能块为退出系统。第五章详细设计与实现本部分说明了系统的整个设计, 再以工资数据输入, 工资计算以及查询为例详细说明了系统是怎样实现的。51数据库设计 5.1.1概念设计概要设计基础是完成需求分析后提供的需求说明书, 用概念数据模型表示数据及其相互间的关系, 这种数据模型是与DBMS
25、无关的、 面向现实世界的、 易如理解的数据模型, 其独立于计算机的数据模型, 独立于计算机的软硬件系统, 与用户进行交流十分方便。概念性数据模型关心的是如何完整、 正确地反映客观实际情况, 不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况, 是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式, 一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的基础。概念设计中自顶向下的实体分析方法, 即常见的实体联系模型( 简称E-R模型) , 对具体数据进行抽象加工, 将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联
26、系。E-R模型是建立概念性数据模型的有力工具。经过对企业工资管理内容和过程的分析, 本系统应设计的实体和属性如下: 本系统一共用到了3个表。如下: 岗位表(dept.dbf)( 包括岗位名称, 岗位工资) 工龄表(gongling.dbf)(包括工龄,工龄工资)工人信息表(personnel.dbf)(包括编号,姓名,性别,工作岗位,工龄,工资等级)。图5-1为本系统中工人信息的实体集及有关属性的图例: 员工编号员工姓名职称工作岗位性别员工工资等级 图5-15.1.2实体和实体之间的关系E-R图如图5-2: 部门级别工龄员工属于具有工作工资结构薪水账目具有1: N具有1: N 图5-25.2系
27、统中有关数据库表结构设计如下: 部门表字段名类型宽度小数位数索引部门字符型10部门工资数值型1022工龄表字段名类型宽度小数位数索引工龄数值型10索引工龄工资数值型1023员工信息表字段名类型宽度小数位数索引序号数值型10主索引姓名字符型6性别字符型2岗位字符型10工龄数值型5工资等级字符型553系统模块设计举例 下面对本系统的具体的几个模块做详细说明。1、 系统主程序MAIN.PRGclear screen clear eventsset defa to d:qygzopen database databasesalarydo salarymain.mprdo form salaryform
28、ksjmread events2、 Ksjm.frm (1)打开表单设计器, 设计好表单, 而且设置好必要的属性, 设计结果见图6-3。Form1.load事件代码:public ii=0Timer.timer事件代码:if Thisform.Label1.Left=255*2-6I=0Endif(2)”员工基本信息”按钮的CLICK事件为: do form salaryformpersonnel personnel.frm的有关设计见第3目 图5-3 ( 3) ”工资基本设定”按钮的CLICK事件为: do form salaryformdataformat( 4) ”工资汇总”按钮的CLI
29、CK事件为: do form salaryformresult( 5) ”个人工资查询”按钮的CLICK事件为: do form salaryformgrcx( 6) ”退出”按钮的CLICK事件为: thisform.releaseclear events3 personnel.frm的有关设计: (1)打开表单设计器, 设计好表单, 而且设置好必要的属性, 设计结果见图6-4。Form1.init事件代码:set multilocks oncursorsetprop(buffering,3)(2) mand1.click事件代码: thisform.pageframe1.page1.fy1
30、.enabled=.F.mand2.enabled=.F.mand3.enabled=.F.mand4.enabled=.T.if mand1.caption=增加新记录thisform.pageframe1.page1.txtpid.enabled=.T.thisform.pageframe1.page1.txtpname.enabled=.T.thisform.pageframe1.page1.txtpsex.enabled=.T.thisform.pageframe1.page1.txtpjob.enabled=.T.thisform.pageframe1.page1.txtpindat
31、e.enabled=.T.thisform.pageframe1.page1.txtprank.enabled=.T.append blankmand1.caption=增加确认thisform.pageframe1.page1.refreshthisform.pageframe1.page1.txtpid.setfocuselsegetid=alltrim(thisform.pageframe1.page1.txtpid.value)getname=alltrim(thisform.pageframe1.page1.txtpname.value)getsex=alltrim(thisform
32、.pageframe1.page1.txtpsex.value)getjob=alltrim(thisform.pageframe1.page1.txtpjob.value)getindate=alltrim(thisform.pageframe1.page1.txtpindate.value)getrank=alltrim(thisform.pageframe1.page1.txtprank.value)if empty(getid) or empty(getname) or empty(getsex) or empty(getjob) or empty(getindate) or empt
33、y(getrank)messagebox(资料不足,48,错误)elsemand1.caption=增加新记录tableupdate(.t.)thisform.pageframe1.page1.txtpid.enabled=.F.thisform.pageframe1.page1.txtpname.enabled=.F.thisform.pageframe1.page1.txtpsex.enabled=.F.thisform.pageframe1.page1.txtpjob.enabled=.F.thisform.pageframe1.page1.txtpindate.enabled=.F.t
34、hisform.pageframe1.page1.txtprank.enabled=.F.thisform.pageframe1.page1.fy1.enabled=.T.mand2.enabled=.T.mand3.enabled=.T.mand4.enabled=.F.endifendif4工龄工资设定窗体代码:1.”修改”按钮有关代码:thisform.grdgongling.column1.text1.enabled=.T.thisform.grdgongling.column2.text1.enabled=.T.thisform.grdgongling.column1.text1.s
35、etfocus2.”修改确认”按钮有关代码:thisform.grdgongling.column1.text1.enabled=.F.thisform.grdgongling.column2.text1.enabled=.F.3.”添加” 按钮有关代码:append blankgo bottomthisform.grdgongling.column1.text1.enabled=.T.thisform.grdgongling.column2.text1.enabled=.T.thisform.grdgongling.column1.text1.setfocus4.”删除” 按钮有关代码:th
36、isform.grdgongling.recordsource=use gongling exclusivedelete from gongling where gname=getgnamepackthisform.grdgongling.recordsource=gonglingthisform.grdgongling.refresh5.”退出” 按钮有关代码thisform.releasedo form salaryformdataformat5个人查询窗体有关代码:( 1) .”确定”按钮有关代码:inname=alltrim(thisform.text1.value)inpswd=al
37、ltrim(thisform.text2.value)set order to tms_userseek innameif !found() cMessageTitle=设备管理系统 cMessageText=用户名错误, 请重新输入 nDialogType=4+32 nAnswer=messagebox(cMessageText,nDialogType,cMessageTitle) do case case nAnswer=6 thisform.text1.value= thisform.text1.setfocus case nAnswer=7 messagebox(请勿偷窥她人资料,48
38、,警告) thisform.release endcaseelse if tms_pswd!=inpswd cMessageTitle=设备管理系统 cMessageText=密码错误, 请重新输入 nDialogType=4+32 nanswer=messagebox(cMessageText,nDialogType,cMessageTitle) do case case nAnswer=6 if flag2 thisform.text2.value= thisform.text2.setfocus flag=flag+1 else messagebox(请勿偷窥她人资料,48,警告) th
39、isform.release endif case nAnswer=7 messagebox(请勿偷窥她人资料,48,警告) thisform.release endcase else thisform.release par1=inname do form salaryformgresult endifendif( 2) 表单载入事件代码: public innamepublic flagflag=05岗位工资有关源码:( 1) .”修改”按钮有关代码:thisform.grddept.column1.text1.enabled=.T.thisform.grddept.column2.text1.enabled=.T.thisform.grddept.column1.text1.setfocus( 2) .”修改确认”按钮有关代码:thisform.grddept.column1.text1.enabled=.F.thisform.grddept.column2.text1.enabled=.F.( 3) .”添加” 按钮有关代码:append blankgo bottomthisform.g