工资管理系统论文-无忧无虑毕设网_第1页
工资管理系统论文-无忧无虑毕设网_第2页
工资管理系统论文-无忧无虑毕设网_第3页
工资管理系统论文-无忧无虑毕设网_第4页
工资管理系统论文-无忧无虑毕设网_第5页
已阅读5页,还剩53页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无忧无虑毕设网 ():毕业设计源码下载 毕业设计 源码下载: 本文配套程序下载地址 : 无忧无虑毕设网 ()-大学生毕业设计站 ,免费毕业设计论文 ,无忧无虑毕设网 大学生毕业设计 ,出售各类毕业设计源码 ,论文 ,程序源码 ,网站源码 ,免费视频教程 ,我们将竭诚为您服务! 高等教育自学考试本科毕业论文 (计算机信息管理专业) 人事工资管理系统 申请人 姓名 李 芳 学 科 专 业 计算机信息管理 指 导 教 师 高等教育自学考试计算机信息管理专业本科生毕业论文 第 1 页 共 58 页 长沙航空职 业技术学院 二 二年十月 摘要 随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事工资的管理势在必行。本系统结合某中型公司实际的人事、财务制度,经过实际的需求分析,采用功能强大的 DDLPHI 5 做为开发工具、 Paradox7做为数据库开发出来的单机版人事管工资理系统。 整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成人事、工资管理的全过程,包括新进员工加入时人事档案的建立、老员工的转出、职位等的变动引起职工信息的修改、员工信息查询、统计等人事管理工作以及新进 员工工资的新增、老员工工资修改、出盘、工资短信等工资管理工作。经过实际使用证明,本文所设计的人事工资管理系统可以满足某中型公司人事、工资管理方面的需要。 论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。 关键词: 数据库, Paradox7, Delph 5,出盘,工资短信、人事工资管理 高等教育自学考试计算机信息管理专业本科生毕业论文 第 2 页 共 58 页 目 录 第一 章 绪 论 . 4 1.1 课题来源 . 4 1.2 开发工具的选择 . 4 1.3 本文所作工作 . 5 第二章 需求分析 . 7 2.1 总体需求调查 . 7 2.1.1 组织结构图 . 7 2.1.2 系 统目标 . 7 2.1.3 应用现状调查 . 7 2.1.4 业务总体流程调查 . 7 2.2 系统功能调查 . 8 2.2.1 人事管理功能 . 9 2.2.2 工资管理功能 . 9 2.2.3 系统维护功能 . 9 2.3 系统功能模块图 . 9 第三章 概要设计 . 10 3.1 概念设计 . 10 3.2 数据库设计 . 12 3.2.1 ygzlb(员工资料表) . 12 3.2.2 Yhklb 用户口令表 . 13 3.2.3 Ygxjjgb 员工薪金结构表 . 13 3.2.4 Kjcsb 控制参数表 . 14 3.2.5 Jbcsb 基本参数表 . 15 第四章 详细设计 . 16 4.1 启动界面设计 . 16 4.1.1 功能说明 . 16 4.1.2 屏幕格式设计 . 16 4.2 登录窗口设计 . 16 4.2.1 功能说明 . 16 4.2.2 屏幕格式设计 . 17 4.2.3 源程序分析 . 17 4.3 主窗口设计 . 18 高等教育自学考试计算机信息管理专业本科生毕业论文 第 3 页 共 58 页 4.3.1 功能说明 . 18 4.3.2 屏幕格式设计 . 19 4.3.3 源程序分析 . 20 4.4 人事管理模块的实现 . 23 4.4.2 员工基本信息维护 . 26 4.4.3 员工基本信息查看 :. 28 4.4.4 员工基本信息条件查询 . 29 4.4.5 人事状况曲线 : . 31 4.4.6 企业员工花名册 :. 32 4.5 工资管理模块的实现 . 32 4.5.1 出盘 . 32 4.5.2 员工工资结构调整 . 46 4.5.3 工资短信 . 49 4.6 系统维护模块设计 . 53 4.6.1 基本参数维护 . 53 4.6.2 用户管理 . 54 4.7 系统其它功能的实现 . 55 4.7.1 打开计算器 . 55 4.7.2 打开写字板 . 56 4.7.3 窗口的层叠、平铺、极小化操作 . 56 4.7.4 关于窗口的实现 . 56 第五章 毕业设计小结 . 56 高等教育自学考试计算机信息管理专业本科生毕业论文 第 4 页 共 58 页 第一章 绪 论 1.1 课题来源 随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事工资的管 理势在必行。对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;而工资管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理,同时计算机 具有着 手工管理所无法比拟的优点 .例如 :检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事工资资管理的效率 ,也是企业的科学化、正规化管理 ,与世界接轨的重要条件。 不同的企业具有不同的人事、工资管理制度,这就决定了不同的企业需要不同的人事工资管理系统。某中型公司以前的所有资料都是用 Foxbase 来进行管理的,面对目前的实际状况,迫切需要开发一个新系统来适应这一些工作。 1.2 开发工具的选择 现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行 、使用最多、最为先进的可用作企业级开发工具的产品有: Microsoft 公司的 Visual Basic Microsoft 公司的 Visual C 高等教育自学考试计算机信息管理专业本科生毕业论文 第 5 页 共 58 页 Borland 公司的 Delphi Powersoft 公司的 PowerBulider Java 等等 在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化 的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间。 作为数据库系统的开发, Delphi 是一个非常理想选择。 Delphi 因简单易学、功能强大、编译速度快而从众多的软件开发工具中脱颖而出。它提供了灵活的可视化设计工具,将可视化界面与面向对象技术完善、紧密地结合起来,并封装了Windows 编程的复杂性。程序的规模小到简单的个人数据库应用,大到复杂的企业的多层次 分布式系统,都可以使用 Delphi 进行开发,其友好的集成开发界面,可视化的双向开发模式,良好的数据库应用支持高效的程序开发和程序运行,备受广大程序开发人员的好评。尤其是 Delphi 对数据库应用的强大支持,大大提高了数据库应用软件开发的效率,缩短了开发周期,深受广大数据库应用程序设计人员的喜爱。 Delphi 为数据库应用开发人员提供了丰富的数据库开发组件,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。 本系统采用 Dephi 5 而不选择 Dephi 6、 Dephi 7 是因为开发移动 2000 综合业务管理系统的过程中发现其稳定性比较好,所以到现在还用它。 1.3 本文所作工作 第一章 绪论部分 主要叙述课题提出背景、目前应用现状、分析比较当前开发工具,数据库技术的比较。 第二章 结合软件工程方法 ,对系统进行需求分析、功能划分、数据流图设计,并结合数据库原理和功能划分进行 ER 图的绘制、数据库结构设计, 第 三 章 根据需求分析的结果 , 用户概念数据模型表示数据及其相互间的联系 。 第 四 章 根据需求分析的结果 , 对系统进行详细设计,主要介绍用 Delphi高等教育自学考试计算机信息管理专业本科生毕业论文 第 6 页 共 58 页 和 Pradox 实现每一个模块的具体功能 。 第 五 章 毕业 设计小结, 总结部分介绍了设计体会和编程体会,并指出了系统设计中的不足和改进的方向。 高等教育自学考试计算机信息管理专业本科生毕业论文 第 7 页 共 58 页 第二章 需求分析 2.1 总体需求调查 2.1.1 组织结构图 某中型公司组织结构图如下 2.1.2 系统目标 采用公司现有的软硬件软件及科学的管理系统开发方案,建立某中型人事工资管理系统,实现移动人事工资管理的计算机自动化。 系统应符合公司人事、工资管理制度,并达到操作直观、方便、实用、安全等要求。 2.1.3 应用现状调查 目前,公司使用的人事工资管理系统采用的是 DOS 环境下的 Foxbase 数据库,界面不友好,不能适 应移动公司发展的需要。 2.1.4 业务总体流程调查 总经理总经理室经理室 总工室运维部 工程部业务部 财务部多经部高等教育自学考试计算机信息管理专业本科生毕业论文 第 8 页 共 58 页 维护员工基本信息:人事管理主要负责人员基本信息的维护,包括新进员工档案的建立,员工信息的修改。 公司工资管理基本流程如下: 数据来源:将各部门送达的员工工资信息包括基本工资、奖金、水电费等作为数据来源,分为新增员工工资数据和老员工每月修改数据。 数据的输入:由工作人员通过新员工本月工资增加和老员工上月工资表修改完成。 数据的统计:由工作人员通过对修改后的上月工资表进 行计算得到每个人的实发工资以及总金额。 表格的制作:由工作人员以修改、计算后的在上月工资表为蓝本生成与银行进行数据交换的软件即出盘。同时可打印工资报表。 2.2 系统功能调查 整个系统从总体上分为人事管理、工资管理、系统维护三大部分,每一部分应实现的功能如下: 维护员工基本信息 维护员工工资信息 数据统计 表格制作出盘 结束 开始 高等教育自学考试计算机信息管理专业本科生毕业论文 第 9 页 共 58 页 2.2.1 人事管理功能 新员工档案的输入 : 员工基本信息维护 :包括修改、删除(删除员工只是将该员工登记为无效,并不要求从表中删除) . 员工基本信息查看 : 员工基本信息查询:支持多条件查询,可以选择某一部门、某一职位、某一职称、学历、性别等进行查询,也可 以组合查询。 人事状况曲线 : 企业员工花名册 : 2.2.2 工资管理功能 新员工工资新增: 员工工资修改: 出盘 :按所规定的格式生成与银行进行数据交换的软件,一般为文本文件 出盘出错回滚: 工资短信:将员工本月工资信息通过短信发出,并通知领工资时间。 2.2.3 系统维护功能 部门信息维护:实现灵活的增减部门信息 职务信息维护:实现灵活的增减职务信息 职称信息维护:实现灵活的增减职称信息 工资账目维护:能够灵活的改变员工的薪水账目。 用户管理:包括新增用户、删除用户、修改用户密码等。 2.3 系统功能模块图 高等教育自学考试计算机信息管理专业本科生毕业论文 第 10 页 共 58 页 第三章 概要设计 3.1 概念设计 概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与 DBMS 无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。 概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般 情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据株洲移动人事工资管理系统 新增用户 修改密码 删除用户 工资管理模块 工资短信 新员工工资新增 老员工工资维护 出 盘 工资报表 系统维护模块 工资账目维护 职务信息维护 部门信息维护 职称信息维护 用户管理 人事管理模块 新员工档案的新增 员工基本信息维护 员工基本信息查看 员工基本信息查询 人事状况曲线分析 企业员工花名册 高等教育自学考试计算机信息管理专业本科生毕业论文 第 11 页 共 58 页 库结构的基础。 概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称 E-R 模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。 E-R 模型是建立概念性数据模型的有力工具。 通过对企业员工管理内容、工资管理内容和过程的分析,本系统应设计的实体和属性如下: 员工(包括员工工号、员工姓名、学历、性别、政治面貌、出生日期、所属部门、职称、职务、入职时间、身份证号、联系电话、家庭住址、手机号码、 Email、有效标志) 部门(部门代号、部门名称) 职务(职务代号、职务名称) 职称(职称代号、职称名称) 薪金结构(月份、员工工号、薪水帐目、数目) 薪水帐目(薪水帐目代号、薪水帐目名称) 员工工号 员工姓名 学历 性别 政治面貌 出生日期 所属部门 职称 职务 所属部门 身份证号 家庭住址 联系电话 手机号码 Email 有效标志 员工 职务 职务代号 职务名称 部门 部门代号 部门名称 职称 职称代号 职称名称 薪水帐目名称 薪水帐目 薪水帐目代号 高等教育自学考试计算机信息管理专业本科生毕业论文 第 12 页 共 58 页 实体和实体之间的关系 E-R 图如下: 3.2 数据库设计 作为 Borland 公司的桌面数据库, Paradox 在 Delphi 中的应用非常广泛,为此我选用 Paradox 数据库来进行数据库的逻辑设计。根据前面定义的实体及实休之间的关系,形成数据库的表格 以及各个表之间的关系。 为了减少数据冗余度,将职称实体、部门实体、职务实体、薪水帐目实体放在同一个表里,以一个类型字段加以区分。对个关系选择主健, 按照关系模式的规范化进行规范,消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程 度 的 分离 。 3.2.1 ygzlb(员工资料表) 薪金结构 薪水帐目 月份 数目 员工工号 部门 职称 职务 员工 属于 具 有 担任 薪金结构 薪水账目 具有 1: N 具有 1: N 高等教育自学考试计算机信息管理专业本科生毕业论文 第 13 页 共 58 页 说明:员工基本信息表用于存储员工基本信息,为保证数据的一致和历史资料的完整,表的记录在一般的情况不能被删除,如果发生员工离职,只更改其有效标志为 9。 3.2.2 Yhklb 用户口令表 序号 域名 域中文名 域类型 备注 1 Dlgh 登录工号 Alpha(20) 主键 2 Pswd 口令 Alpha (10) 说明:为 了便于多个用户管理该系统,建立此表,记录用户的登录工号和口令 3.2.3 Ygxjjgb 员工薪金结构表 序号 域名 域中文名 域类型 备注 1 Ygh 员工工号 Alpha(6) 主键 2 Xm 员工姓名 Alpha (12) 3 Xb 性别 Alpha(2) 4 Zzmm 政治面貌 Alpha(4) 5 Xl 学历 Alpha(12) 6 Qsrq 出生日期 Alpha(19) 7 Ssbm 所属部门 Alpha(30) 8 Zc 职称 Alpha(30) 9 Zw 职务 Alpha(30) 10 Rzsj 入职时间 Alpha(19) 11 Sfzh 身份证号 Alpha(20) 12 Gdlxdh 联系电话 Alpha(16) 13 Jtzz 家庭住址 Alpha(60) 14 Sjhm 手机号码 Alpha(12) 15 Email Email Alpha(20) 16 Yxbz 有效标志 Short 1 代表有效员工; 9 代表无效员工 17 Czy 操作员 Alpha(20) 18 Czrq 操作时间 Alpha(19) 高等教育自学考试计算机信息管理专业本科生毕业论文 第 14 页 共 58 页 说明:员工薪金结构表采用竖表结构,便于以后薪水帐目的新增,利于系统保持较长时间的适用。同时该表采用 月帐的形式,便于历史资料的稳定查询,和统计,同时也能做到出盘发生错误时,进行回滚。在准备当前月份的数据的时候,将同时校验该员工的有效性。如果是无效员工,则系统将不会显示该员工的资料。但在历史月份还是将体现该员工的资料。系统将根据基本参数表中的工资帐目的费用影响关系( 1 或 -1)来形成员工的应发工资和实发工资。 3.2.4 Kjcsb 控制参数表 说明:控制参数表用于控制出盘,在每次出盘成功后,会在该表中插入一条记录,以记录该月是否已经出盘;在需要再次出盘的时候,系统将会首先判断该月的出盘标志,如果已经出盘,则对数据库不做操作,仅仅在界面上进行出盘,生成 TXT 文本文件,如果未出盘则需要对数据库进行操作(将该月的数据重新插入数据库,作为下个月出盘的初始数据) 序号 域名 域中文名 域类型 备注 1 Yf 月份 Alpha(6) 主键 2 Ygh 员工工号 Alpha(6) 主键 3 Xszmid 薪水帐目 ID Short 主键 4 Sm 数目 Money 5 Czy 操作员 Alpha(6) 6 Czsj 操作时间 Alpha(19) 序号 域名 域中文名 域类型 备注 1 Yf 序列 Short 主键 2 Csdm 参数代码 Alpha(20) 3 Csmc 参数名称 Alpha(40) 4 Czy 操作员 Alpha(6) 5 Czsj 操作时间 Alpha(19) 高等教育自学考试计算机信息管理专业本科生毕业论文 第 15 页 共 58 页 3.2.5 Jbcsb 基本参数表 序号 域名 域中文名 域类型 备注 1 ID ID Short 主键 2 Lx 参数类型 Short 1:薪水帐目; 2:部门代码;3:职务代码; 4:职称代码 3 Mc 参数名称 Alpha(30) 4 Czy 操作员 Alpha(20) 5 Czsj 操作时间 Alpha(19) 6 Rela 费用影响关系 Short -1代表该项目对实发工资是负的影响; 1 代表该项目对实发工资是正的影响; 3.2.6 工资短信表 序号 域名 域中文名 域类型 备注 1 ygh 员工号 Alpha(6) 主键 2 sfgz 实发工资 Alpha(10) 说明:基本参数表用于维护系统的一些基本参数,例如职务,职称,工资帐目等、部门。 员工信息表和员工薪金结构表通过员工 ID 进行关联;可得知每个员工的工资明细情况; 员工薪金结构表中的帐目 ID 在基本参数表中进行定义; 员工信息表的职务 ID 和职称 ID 和部门 ID 也在基本参数表中进行定义; 工资短信表:是为便于发送工资短信信息而建立的,只保存当前月的工资数据。 高等教育自学考试计算机信息管理专业本科生毕业论文 第 16 页 共 58 页 第四章 详细设计 根据需求分析、概要设计的结果,采用 Delphi 做为开发工具,实现公司人事工资管理各模块的功能。 4.1 启动界面设 计 4.1.1 功能说明 系统运行时,首先弹出此启动窗口, 4 秒钟后自动关闭出现主窗口和登录窗口 ,实现此界面主要是修改了工程文件,并调用了一个延时函数,实现起来很简单,源程序不加以介绍。 4.1.2 屏幕格式设计 启动界面 4.2 登录窗口设计 4.2.1 功能说明 控制员工登录,防止非法用户闯入本系统,保证系统的安全, 输入口令时屏高等教育自学考试计算机信息管理专业本科生毕业论文 第 17 页 共 58 页 幕显示为 “*”以利保密 。 4.2.2 屏幕格式设计 登录界面 4.2.3 源程序分析 procedure TFrm_dl.Button1Click(Sender: TObject); begin if edit2.text= then /判断密码是否输入为空 begin Application.MessageBox( 密 码 不 能 为 空 , 请 重 新 输 入 ! , 系 统 提 示,mb_IconInformation+mb_OK); Edit2.SetFocus; Exit; end; query1.sql.clear; query1.sql.add(select pswd from yhklb where dlyh=+trim(edit1.text)+); if query1.Active then query1.close; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 18 页 共 58 页 query1.open; /根据用户名从用户口令表中取出用户口令 if edit2.textquery1.fieldbyname(pswd).asstring then begin if err_cou=2 then /判断是否三次输入错误 begin application.messagebox( 三次登录的用户名或密码错误 , 系统退出,mb_IconInformation+mb_OK); frm_main.close; /关闭主窗口,退出系统 end; Application.MessageBox( 密 码 或 工 号 不 正 确 , 请 重 新 输 入 !,mb_IconInformation+mb_OK); /若密码输入错误,提示重新输入 Edit2.SetFocus; err_cou:=err_cou+1; /输入次数加 1 exit; end; dluser:=edit1.text; /给变量赋值,记录登录用户,供其它程序使用 Close; end; 4.3 主窗口设计 4.3.1 功能说明 界面采用 MDI 方式,可同时打开几处子窗口体,在界面上放置了菜单栏和工具栏、状态栏;菜单栏集中了系统操作的入口,各功能模块的执行 从此进入;工具框显示了系统菜单中常用项目的快键图标,使用户只需点击相应图标即可进入相应功能模块,当鼠标移动到相应图标时,系统会出现提示信息。状态栏主要是用于显示日期时钟信息,以及系统操作过程中的信息。 高等教育自学考试计算机信息管理专业本科生毕业论文 第 19 页 共 58 页 4.3.2 屏幕格式设计 系统主界面 高等教育自学考试计算机信息管理专业本科生毕业论文 第 20 页 共 58 页 4.3.3 源程序分析 procedure TFrm_main.N20Click(Sender: TObject); /菜单关闭事件 begin close; end; procedure TFrm_main.N_shutdownClick(Sender: TObject);件 begin /菜单退出系统并关机事件 if messagedlg(是否退出并关闭计算机? ,mtinformation,mbyes,mbno,1)=mryes then begin close; ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 ); /调用 API 函数 end; end; procedure TFrm_main.N_closeClick(Sender: TObject); begin close; end; procedure TFrm_main.N_bmcxwhClick(Sender: TObject);/打开部门参数维护窗口 begin Application.CreateForm(TFrm_bmxg, Frm_bmxg); if frm_bmxg.query1.active then frm_bmxg.query1.close; /判断 Query 是否打开 frm_bmxg.query1.open; /打开 Query end; procedure TFrm_main.N_zwwhClick(Sender: TObject); /打开职务参数维护窗口 begin Application.CreateForm(TFrm_zwxg, Frm_zwxg); if frm_zwxg.query1.active then frm_zwxg.query1.close; frm_zwxg.query1.open; end; procedure TFrm_main.N_ygjbxxsrClick(Sender: TObject);/打开新增员工信息窗口 begin Application.CreateForm(Tfrm_ygzbxxsr, frm_ygzbxxsr); end; procedure TFrm_main.N_yhwhClick(Sender: TObject);/打开用户维护窗口 begin Application.CreateForm(TFrm_yhgl, Frm_yhgl); if frm_yhgl.query1.active then frm_yhgl.query1.close; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 21 页 共 58 页 frm_yhgl.query1.open; end; procedure TFrm_main.Timer1Timer(Sender: TObject); var y,m,d:word; /在状态栏上显示日期时间星期 begin decodedate(now,y,m,d); statusbar1.Panels1.text:=concat(【 ,inttostr(y),年 ,inttostr(m),月 ,inttostr(d),日 ,formatdatetime(hh:nn:ssAM/PM,now) ,f_get_week,】 );/调用函数 f_get_week end; procedure TFrm_main.N_zcwhClick(Sender: TObject);/打开职称维护窗口 begin Application.CreateForm(TFrm_zcxg, Frm_zcxg); if frm_zcxg.query1.active then frm_zcxg.query1.close; frm_zcxg.query1.open; end; procedure TFrm_main.N_ygzbxxwhClick(Sender: TObject);/打开员工信息维护窗口 begin Application.CreateForm(Tfrm_ygzbxxwh, frm_ygzbxxwh); end; procedure TFrm_main.N_zbxxckClick(Sender: TObject); /打开员工信息查看窗口 begin Application.CreateForm(Tfrm_llygzbxx, frm_llygzbxx); end; procedure TFrm_main.N_tjcxClick(Sender: TObject); /打开员工信息条件查询窗口 begin Application.CreateForm(Tfrm_ygzlcx, frm_ygzlcx); end; procedure TFrm_main.N_gzzmwhClick(Sender: TObject);/打开薪水帐目维护窗口 begin Application.CreateForm(TFrm_gzzmwh, Frm_gzzmwh); if Frm_gzzmwh.query1.active then Frm_gzzmwh.query1.close; Frm_gzzmwh.query1.open; end; procedure TFrm_main.N_cpClick(Sender: TObject); /打开出盘窗口 begin Application.CreateForm(Tfrm_cp, frm_cp); end; procedure TFrm_main.N_gzdxClick(Sender: TObject); /打开工资短信窗口 begin 高等教育自学考试计算机信息管理专业本科生毕业论文 第 22 页 共 58 页 frm_gzdx:=Tfrm_gzdx.create(application); frm_gzdx.showmodal; frm_gzdx.free; end; procedure TFrm_main.N_jsbClick(Sender: TObject); /打开写字板 begin ShellExecute(handle,open,notepad.exe,nil,nil,SW_ShowNormal);/调用 API 函数 end; procedure TFrm_main.N_jsqClick(Sender: TObject); /打开计算器 begin ShellExecute(handle,open,calc.exe,nil,nil,SW_ShowNormal); end; procedure TFrm_main.N_ppClick(Sender: TObject); /实现窗口平铺 begin TileMode := tbVertical; Tile; end; procedure TFrm_main.N_cdClick(Sender: TObject); /实现窗口层叠 begin Cascade; end; procedure TFrm_main.N_jxhClick(Sender: TObject); /实现窗口极小化 var i:integer; begin with frm_main do begin for i := MDIchildcount-1 downto 0 do MDIChildreni.Windowstate := wsMinimized; end; end; procedure TFrm_main.N_aboutClick(Sender: TObject); /打开关于本系统窗口 begin Application.CreateForm(Tfrm_about, frm_about); end; function Tfrm_main.f_get_week :string; /获取星期函数 var days: array1.7 of string; begin days1 := 星期日 ; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 23 页 共 58 页 days2 := 星期一 ; days3 := 星期二 ; days4 := 星期三 ; days5 := 星期四 ; days6 := 星期五 ; days7 := 星期六 ; result :=daysDayOfWeek(now); end; procedure TFrm_main.N_ygzlbbClick(Sender: TObject); /生成企业员工花名册 begin frm_ygbb:=Tfrm_ygbb.create(application); if frm_ygbb.Query1.active then frm_ygbb.Query1.close; frm_ygbb.Query1.open; frm_ygbb.QuickRep1.Prepare; frm_ygbb.QuickRep1.Preview; frm_ygbb.Free; end; procedure TFrm_main.N_rsqxfxClick(Sender: TObject); begin /打开人事状况曲线分析窗口 Application.CreateForm(Tfrm_rsqkqxfs, frm_rsqkqxfs); if frm_rsqkqxfs.Query1.Active then frm_rsqkqxfs.Query1.Close; frm_rsqkqxfs.Query1.open; end; end. 4.4 人事管理模块的实现 4.4.1 员工基本信息输入 功能说明 完成新员工人事档案的 建立,初始状态下所有输入和选择框框均无效,只有点新增按钮后才可用,同时提交按钮变成有效。 高等教育自学考试计算机信息管理专业本科生毕业论文 第 24 页 共 58 页 屏幕格式说明 新员工资料录入界面 源程序分析 /增加按钮事件,只是将各输入框和提交按钮置为可用 。 procedure Tfrm_ygzbxxsr.Button3Click(Sender: TObject); /提交按钮事件 var Sql: String; qsrq,rzsj,czdate: String; begin qsrq:=FormatDatetime(YYYY-MM-DD,datetimepicker1.Datetime); /出生日期 rzsj:=FormatDatetime(YYYY-MM-DD,datetimepicker2.Datetime); /入职时间 czdate := FormatDatetime(YYYY-MM-DD HH:MM:SS,Now); /操作时间 if Application.MessageBox( 您 确 认 要 提 交 吗 ? , 系 统 提 示,mb_IconInformation+mb_OK+mb_OKCancel)=IDCancel then Exit; begin if (Edit1.text=) or (Edit2.text=) then begin Application.MessageBox( 姓 名 不 能 为 空 或 员 工 号 不 能 为 空 !, 系统提示,mb_IconInformation+mb_OK); Exit; end; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 25 页 共 58 页 if trim(DBLookupComboBox1.Text) = then begin showmessage(请选择部门 );exit;end; if trim(DBLookupComboBox2.Text) = then begin showmessage(请选择职务 );exit;end; if trim(DBLookupComboBox3.Text) = then begin showmessage(请选择职称 );exit;end; sql:=select * from ygzlb where ygh=+trim(edit1.text)+; /根据此员工号是否已存在 query1.sql.clear; query1.sql.add(sql); if query1.Active then query1.close; query1.open; if not query1.isempty then begin showmessage(此员工号已存在,请重新输入员工号 ); edit1.selectall; edit1.setfocus; exit; end else begin /执行插入操作,往员工资料表中插入一条记录 sql:=insert into ygzlb(ygh,xm,xb,xl,qsrq,ssbm,zc,zw,rzsj,sfzh,jtzz,gdlxdh, +sjhm,email,zzmm,yxbz,czy,czrq) +values(+Trim(Edit1.Text)+,+trim(Edit2.text)+, +combobox1.text+,+combobox3.text+,+qsrq+,+DBLookupComboBox1.keyvalue+, +DBLookupComboBox3.keyvalue+,+DBLookupComboBox2.keyvalue+,+rzsj+,+edit3.text+, +trim(edit4.text)+,+trim(edit7.text)+,+trim(edit6.text)+,+trim(edit5.text)+, +combobox2.text+,1,+dluser+,+czDate+); query1.sql.clear; query1.sql.add(sql); query1.execsql; if Application.MessageBox( 该 记 录 提 交 成 功 , 继 续 提 交 吗 ?, 系统提示,mb_IconInformation+mb_OK+mb_OKCancel)=IDCancel then begin Button3.Enabled := False; Exit; end; button1.Click; end; end; end; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 26 页 共 58 页 4.4.2 员工基本信息维护 功能说明 包括修改、删除(删除员工只是将该员工登记为无效,并不要求从表中删除) .输入员工号后按回车或点击查询按钮,查询待修改员工基本信息,各输入框初始状态为只读, 屏幕格式说明 源程序分析 procedure Tfrm_ygzbxxwh.Button1Click(Sender: TObject); /查询按钮事件 begin if trim(edit1.text) then begin Query1.sql.clear; /根据员工号从员工资料表中取出员工信高等教育自学考试计算机信息管理专业本科生毕业论文 第 27 页 共 58 页 息 Query1.sql.add(select * from ygzlb where ygh=:ygh and yxbz=1); Query1.ParamByName (ygh).ASSTRING :=edit1.text; IF Query1.ACTIVE THEN Query1.CLOSE; Query1.OPEN; IF Query1.IsEmpty THEN /判断是否存在此员工,如不存在,系统提示 begin SHOWMESSAGE(对不起!没有员工档案数据!请正确输入员工号! ); edit1.selectall; exit; end; DateTimePicker1.Datetime:=strtodate(query1.fieldbyname(qsrq).asstring); DateTimePicker2.Datetime:=strtodate(query1.fieldbyname(rzsj).asstring); end; end; procedure Tfrm_ygzbxxwh.Button2Click(Sender: TObject); /删除按钮事件 var sql:string; /询问是否删除 begin if Application.MessageBox( 您 确 认 要 删 除 吗 ? , 系统提示,mb_IconInformation+mb_OK+mb_OKCancel)=IDCancel then Exit; Sql := update ygzlb set yxbz=9 where ygh=+trim(edit1.text)+; Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; /将有效标志必为 9,记录并不删除 Application.MessageBox(该记录删除成功 !,系统提示 ,mb_IconInformation+mb_OK); end; procedure Tfrm_ygzbxxwh.Button3Click(Sender: TObject); /提交按钮事件 var czdate,qsrq,rzsj:string; begin if (Query1.state=dsEdit )or( Query1.state=dsInsert) then else exit; /判断 Query 是否在编辑状态 qsrq:=FormatDatetime(YYYY-MM-DD,datetimepicker1.Datetime); rzsj:=FormatDatetime(YYYY-MM-DD,datetimepicker2.Datetime); czdate := FormatDatetime(YYYY-MM-DD HH:MM:SS,Now); if messagedlg(是否保存员工数据? ,mtinformation,mbyes,mbno,1)=mryes then else exit; Query1.fieldbyname(qsrq).asstring:=qsrq; /出生日期赋值 Query1.fieldbyname(rzsj).asstring:=rzsj; /入职日期赋值 Query1.fieldbyname(czrq).asstring:=czdate; /操作时间 Query1.fieldbyname(czy).asstring:=dluser; /操作员赋值 高等教育自学考试计算机信息管理专业本科生毕业论文 第 28 页 共 58 页 Query1.post; query1.close; query1.open; messagedlg(数据提交成功 !,mtinformation,mbok,1); /提交成功,系统提示 edit1.setfocus; edit1.ReadOnly:=false; /提交按钮置为不可用 end; 4.4.3 员工基本信息查看 : 功能说明 用于浏览员工的基本信息,采用卡片式和表格式两种形式表现员工的基本信息,浏览时应具有浏览前一条记录、后一条记录、最前一条、最后一条记录的功能。实现采用 pagecontrol 控件,中间放置两个 Tablesheet,其中一个放置 Dbgrid按件实现表格式浏览,另一个放置 Dbedti 控件 ,实现卡片式浏览。由于只涉及到查询不做源程序分析。 屏幕格式说明 高等教育自学考试计算机信息管理专业本科生毕业论文 第 29 页 共 58 页 浏览员工基本信息界面 4.4.4 员工基本信息条件查询 功能说明 可以根据不同的条件组合,查询员工的基本信息,查询条件包括所属部门、职称、职务、学历、性别、政治面貌、员工号、姓名,和条件可以任意组合。同时应具有查询标专为无效的员工的作用。系统同时应提供 Excel 输出和打印的功能。 多条件查询是本模块重点考虑的内容,本设计完成了对多字段、多条件的查询,其实现程序如源程序分析: 屏幕格式说明 高等教育自学考试计算机信息管理专业本科生毕业论文 第 30 页 共 58 页 员工资料查询界面 源程序分析 procedure Tfrm_ygzlcx.BitBtn1Click(Sender: TObject); /查询按钮事件 begin if query1.active then /判断 Query 是否已经 Open query1.close; /关闭 Query query1.sql.clear; /翻译用户输入,动态添加 SQL Query1.sql.add(select * from ygzlb where 1=1); if DBLookupComboBox1.text then /判断是否选择了部门 begin /若选择,添加所属部门条件 query1.sql.add(and ssbm=:ssbm); query1.parambyname(ssbm).asstring:=DBLookupComboBox1.keyvalue; end; if DBLookupComboBox2.text then /判断是否选择了职务 begin /若选择,添加职务条件 query1.sql.add(and zw=:zw); query1.parambyname(zw).asstring:=DBLookupComboBox2.keyvalue ; end; if DBLookupComboBox3.text then /判断是否选择了职称 begin /若选择,添加职称条件 query1.sql.add(and zc=:zc); query1.parambyname(zc).asstring:=DBLookupComboBox3.keyvalue; end; if combobox1.text then /判断是否选择了学历 begin /若选择,添加学历条件 query1.sql.add(and xl=:xl); query1.ParamByName(xl).asstring:=combobox1.text; end; if combobox2.text then /判断是否选择了政治面貌 begin /若选择,添加政治面貌条件 query1.sql.add(and zzmm=:zzmm); query1.ParamByName(zzmm).asstring:=combobox2.text; end; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 31 页 共 58 页 if combobox3.text then /判断是否选择了性别 begin /若选择,添加性别条件 query1.sql.add(and xb=:xb); query1.ParamByName(xb).asstring:=combobox3.text; end; if edit1.text then /判断是否输入了员工号 begin /若已输入,添加员工号条件 query1.sql.add(and ygh=:ygh); query1.parambyname(ygh).asstring:=edit1.text; end; if edit2.text then /判断是否输入了姓名 begin /若输入,添加员工姓名条件 query1.sql.add(and xm=:xm); query1.parambyname(xm).asstring:=edit2.text end; if checkbox1.checked then /有效标志是否选择 query1.sql.add(and yxbz=1); /若选择,只选择标志有效的员工 query1.open; /打开查询 if query1.isempty then /判断是来有记录,若无,弹出提示框 showmessage(没有你所要的员工资料 ,请确认条件是否正确 ); procedure Tfrm_ygzlcx.BitBtn3Click(Sender: TObject); /打印按钮事件 begin print_dbgrid(DataSource1,dbgrid1,HX) ; /调用自定义过程 print_dbgrid; end; end; procedure Tfrm_ygzlcx.BitBtn2Click(Sender: TObject); /Excel 输出按钮事件 begin PUB_INSET_EXCEL(QUERY1,DBGRID1); /调用自定义过程 PUB_INSET_EXCEL end; 4.4.5 人事状况曲线 : 功能说明 采用饼状图分析公司的人事状况,实现按性别、职称、职务、学历、部门五高等教育自学考试计算机信息管理专业本科生毕业论文 第 32 页 共 58 页 种情况分析公司人员的分布情况,直观的分析了公司的人力资源情况,用以辅助公司领导安排人力资源计划,采用 Dbchart 控件可以方便的实现,不做程序分析。 4.4.6 企业员工花名册 : 功能说明 为了保存企业员工信息,生成公司员工花名册,设计了此报表打印模块,通过采用 QuickReport 控件可能方便实现,由于无特殊之处,在此不做源程序分析。 4.5 工资管理模块的实现 4.5.1 出盘 功能说明 选择月份出盘,打印工资清单,出软盘与银行接口,一般不准删除历史月份,不能修改,只能查询,如需对本月工资信息进行维护,见新员工工资新增、员工工资修改。 高等教育自学考试计算机信息管理专业本科生毕业论文 第 33 页 共 58 页 屏幕格式设计 出盘界面 程序流程图 出盘: 选取出盘的月份 确认出盘 否 是 退出 选择存盘路径 否 是 将该月的数据作为下个月的初始数据插入 Ygxjjgb 中 失败 回滚 在 Kjcsb 中插入一条记录,表示该月已经出盘成功 成功 失败 高等教育自学考试计算机信息管理专业本科生毕业论文 第 34 页 共 58 页 出盘回滚: 源程序分析 多数据库表之间的链接操作是本模块的设计重点,在生成员工工资信息的过程中,为了能够显示工资数据,系统要建立基本参数表、员工资料表、员工薪水帐目表之间的连接 操作,为了能够按银行格式输出,本程序花了很多功夫。 出盘发生错误 如果 Ygxjjgb 已经存在下月数据,删除 如果 Cjcsb 存在该月出盘成功标志,删除 高等教育自学考试计算机信息管理专业本科生毕业论文 第 35 页 共 58 页 procedure Tfrm_cp.Button5Click(Sender: TObject); /查询按钮事件 var Sql: String; I,J: Integer; Mark: Boolean; begin Mark := False; J := 2; for I := 0 to StringGrid1.RowCount - 1 do / StringGrid1 清空 StringGrid1.RowsI.Clear; Sql := select mc from jbcsb /从基本参数表中取出薪水帐目 + where lx=1; Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.Open; Query1.First; while not Query1.Eof do /将 薪水帐目显示在 stringgrid1 控件上做为标题 begin StringGrid1.CellsJ,0 := Query1.FieldByName(mc).AsString; J := J + 1; Query1.Next; end; StringGrid1.Cells1,0 := 姓名 ; /0 行 1 列显示姓名标题 StringGrid1.Cells0,0 := 工号 ; /0 行 0 列显示 姓名标题 Sql := select distinct a.ygh,a.xm xm from ygzlb a,ygxjjgb b where b.yf= +Edit1.Text+ and a.ygh=b.ygh; /多连接操作,从员工资料表和薪金结构表中取出员工号和姓名 Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.Open; StringGrid1.RowCount := Query1.RecordCount + 2; if StringGrid1.RowCount 1 then StringGrid1.FixedRows := 1; Query1.First; while not Query1.Eof do /将员工号和姓名插入 StringGrid 控件 begin StringGrid1.Cols0.Add(Query1.FieldByname(ygh).AsString);/第 一列显示员工号 StringGrid1.Cols1.Add(Query1.FieldByname(xm).AsString);/第二列显示姓名 Query1.Next; end; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 36 页 共 58 页 Sql := select a.mc,b.ygh,c.sm,c.ygh,c.xszmid from /从员工资料表、薪金结构表、基本参数表 + jbcsb a,ygzlb b,ygxjjgb c where c.yf= 中取出员工号、薪水帐目、数目 +Edit1.Text+ and a.id=c.xszmid and a.lx=1 + and b.ygh=c.ygh; /多表之间的连接操作 Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.Open; Query1.First; /向第一条记录 while not Query1.Eof do /循环,动态加入各员工的薪水数目 begin for I := 1 to StringGrid1.RowCount - 1 do begin if Query1.FieldByName(ygh).AsString = StringGrid1.Cols0.StringsI then /员工号相同 begin for J := 2 to StringGrid1.ColCount - 1 do begin if Query1.FieldByName(mc).AsString = StringGrid1.Rows0.StringsJ then begin /如果薪水帐目与标题相同,显示数目 StringGrid1.CellsJ,I := FormatFloat(0.00,Query1.FieldByName(sm).AsFloat); Break; end; end; end; end; Query1.Next; /指向下一条 end; for I := 1 to StringGrid1.ColCount - 1 do /统计在 StringGrid 中加入合计 begin if I = 1 then StringGrid1.CellsI,StringGrid1.RowCount-1 := 合计 /在第 1列最后一行显示合计 else begin if Trim(StringGrid1.CellsI,StringGrid1.RowCount-1)= then /最后一行如无空,置为 0.00 StringGrid1.CellsI,StringGrid1.RowCount-1:= 0.00; for J := 1 to StringGrid1.RowCount - 1 do begin if (J StringGrid1.RowCount-1) then begin if Trim(StringGrid1.CellsI,J) = then StringGrid1.CellsI,J := 0.00; /各列为空,置为 0.00 高等教育自学考试计算机信息管理专业本科生毕业论文 第 37 页 共 58 页 StringGrid1.CellsI,StringGrid1.RowCount-1:= FloatToStr(StrToFloat(StringGrid1.CellsI,J)+StrToFloat(StringGrid1.CellsI,StringGrid1.RowCount-1); /将各列值求和 StringGrid1.CellsI,StringGrid1.RowCount-1:= FormatFloat(0.00,StrToFloat(StringGrid1.CellsI,StringGrid1.RowCount-1); /设定显示格式 end; end; end; end; end; procedure Tfrm_cp.Button2Click(Sender: TObject); /出盘按钮事件 var FileDir: String; Sql: String; begin if Application.MessageBox( 确 认 出 盘 吗 ?, 系 统 提 示,mb_IconInformation+mb_OK+mb_OKCancel)=IDCancel then Exit; if Trim(StringGrid1.Cols0.Strings1) = then /判断是否有数据,如没数据,提示 begin Application.MessageBox(没有可出盘的数据! ,系统提示 ,mb_IconInformation+mb_OK); Exit; end; if SaveDialog1.Execute then /执行保存 begin Sql := select csdm from kjcsb where yf= /查询控制参数表本月是否有记录 +Trim(Edit1.Text)+ and csmc=出盘标志 ; Query2.Close; Query2.Sql.Clear; Query2.Sql.Add(Sql); Query2.Open; if query2.IsEmpty then /第一次使用时,执行 outdisk2 outdisk2 else if Query2.FieldByName(csdm).AsString = 0 then /有记录,但未出盘,执行 outdisk OutDisk; FileDir := SaveDialog1.FileName; Save_Disk(FileDir); /调用 过程保存文本文件 Application.MessageBox(出盘成功! ,系统提示 ,mb_IconInformation+mb_OK);/提示出盘成功 end else begin 高等教育自学考试计算机信息管理专业本科生毕业论文 第 38 页 共 58 页 Application.MessageBox( 您 未 选 择 存 放 路 径 , 系 统 将 不 出 盘 !, 系 统 提 示,mb_IconInformation+mb_OK); Exit; end; end; procedure Tfrm_cp.OutDisk; var Sql,DateStr,NextMonth: String; begin DateStr := FormatDateTime(YYYY-MM-DD HH:MM:SS,Now); Sql := select yf,ygh,xszmid,sm from ygxjjgb where yf=+Edit1.Text+; /取出本月工资数据 Query2.Close; Query2.Sql.Clear; Query2.Sql.Add(Sql); Query2.Open; Query2.First; while not Query2.Eof do /将本月记录作为下月工资初始数据 begin Sql := insert into ygxjjgb(yf,ygh,xszmid,sm,czy,czsj) values( +ReturnNextMonth(StrToInt(Trim(Edit1.Text)+,+Query2.FieldByName(ygh).AsString+ +,+Query2.FieldByName(xszmid).AsString+,+Query2.FieldByName(sm).AsString +,+dluser+,+DateStr+); Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; /插入员工薪金结构表 Query2.Next; end; Sql := update kjcsb set csdm=1 where yf=+Trim(Edit1.Text)+ /更新控制参数表 + and csmc=出盘标志 ; Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; if Copy(Trim(Edit1.Text),5,2) = 12 then NextMonth := IntToStr(StrToInt(Copy(Trim(Edit1.Text),5,2)+1)+01 else NextMonth := IntToStr(StrToInt(Trim(Edit1.Text)+1); /取下一个月月份 Sql := insert into kjcsb(csdm,yf,csmc) values( /控制参数表插入记录,但标志为 0 高等教育自学考试计算机信息管理专业本科生毕业论文 第 39 页 共 58 页 +0,+NextMonth+, +出盘标志 ); Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; end; procedure Tfrm_cp.OutDisk2; /第一次使用时,出盘操作 var Sql,DateStr,NextMonth: String; begin DateStr := FormatDateTime(YYYY-MM-DD HH:MM:SS,Now); Sql := select yf,ygh,xszmid,sm from ygxjjgb where yf=+Edit1.Text+; Query2.Close; Query2.Sql.Clear; Query2.Sql.Add(Sql); Query2.Open; Query2.First; while not Query2.Eof do /将本月记录作为下月工资初始数据 begin Sql := insert into ygxjjgb(yf,ygh,xszmid,sm,czy,czsj) values( +ReturnNextMonth(StrToInt(Trim(Edit1.Text)+,+Query2.FieldByName(ygh).AsString+ +,+Query2.FieldByName(xszmid).AsString+,+Query2.FieldByName(sm).AsString +,+dluser+,+DateStr+); Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; Query2.Next; end; sql:=insert into kjcsb(csdm,yf,csmc) values( /控制参数表插入本月出盘记录 +1,+Trim(Edit1.Text)+, +出盘标志 ); /Sql := update kjcsb set csdm=1 where yf=+Trim(Edit1.Text)+ / + and csmc=出盘标志 ; Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 40 页 共 58 页 if Copy(Trim(Edit1.Text),5,2) = 12 then NextMonth := IntToStr(StrToInt(Copy(Trim(Edit1.Text),5,2)+1)+01 else NextMonth := IntToStr(StrToInt(Trim(Edit1.Text)+1); Sql := insert into kjcsb(csdm,yf,csmc) values(本 /控制参数表插入下月记录,以供更新用 +0,+NextMonth+, +出盘标志 ); Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; end; procedure Tfrm_cp.N1Click(Sender: TObject); /快捷键新增事件 begin Application.CreateForm(Tfrm_yggzjgtz, frm_yggzjgtz); /打开员工工资结构调整窗口 Frm_yggzjgtz.Button3.Caption := 确认新增 (&A); /将按钮 3 改为确认新增 end; procedure Tfrm_cp.N2Click(Sender: TObject); /快捷键修改事件 begin Application.CreateForm(Tfrm_yggzjgtz, frm_yggzjgtz); /打开员工工资结构调整窗口 frm_yggzjgtz.Edit1.Text := StringGrid1.Cells0,SelRowCount; frm_yggzjgtz.Button2.Click; frm_yggzjgtz.Button3.Caption := 确认修改 (&S); /将按钮 3 改为确认修改 end; procedure Tfrm_cp.Save_Disk(Str: String); /按银行格式生文本保存过程 var I,J,Count,Amount,shifacol: Integer; TempStr: String; begin ListBox1.Items.Clear; for J := 0 to StringGrid1.ColCount - 1 do /查找实发金额的列数 begin if (StringGrid1.Rows0.StringsJ=实发工资 ) then shifacol:=J; end; for I := 1 to StringGrid1.RowCount - 1 do begin if I StringGrid1.RowCount - 1 then 高等教育自学考试计算机信息管理专业本科生毕业论文 第 41 页 共 58 页 begin for J := 0 to StringGrid1.ColCount - 1 do begin if J = 0 then TempStr := +BankShortBit(StringGrid1.CellsJ,I,1); /员工号 if J = 1 then TempStr := TempStr + BankShortBit(StringGrid1.CellsJ,I,0); /姓名 if J = shifacol then TempStr := TempStr + BankBit(FloatToStr( /实发工资 StrToFloat(StringGrid1.CellsJ,I)*100); end; ListBox1.Items.Add(TempStr); /往 Listbox 里加数据 end; end; ListBox1.Items.Add(BankLongBit(IntToStr(StringGrid1.RowCount - 2),0)+ /取合计工资 BankLongBit(FloatToStr(StrToFloat( StringGrid1.Cellsshifacol, StringGrid1.RowCount-1)*100),1); ListBox1.Items.SaveToFile(Str); end; function Tfrm_cp.BankBit(Str: String): String; /按银行格式要求设计的函数 begin if Str = 000 then Result := 000000 else begin if Length (Str) = 6 then Result := Str; if Length (Str) = 5 then Result := +Str; if Length (Str) = 4 then Result := +Str; if Length (Str) = 3 then Result := +Str; if Length (Str) = 2 then Result := +Str; if Length (Str) = 1 then Result := +Str; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 42 页 共 58 页 end; end; function Tfrm_cp.BankLongBit(Str: String; Flag: Integer): String; /按银行格式要求设计的函数 begin if Flag = 0 then begin if Length(Str) = 1 then Result := +Str; if Length(Str) = 2 then Result := +Str; if Length(Str) = 3 then Result := +Str; if Length(Str) = 4 then Result := +Str; if Length(Str) = 5 then Result := +Str; if Length(Str) = 6 then Result := +Str; if Length(Str) = 7 then Result := +Str; if Length(Str) = 8 then Result := +Str; if Length(Str) = 9 then Result := Str; end; if Flag = 1 then begin if Length(Str) = 1 then Result := +Str; if Length(Str) = 2 then Result := +Str; if Length(Str) = 3 then Result := +Str; if Length(Str) = 4 then Result := +Str; if Length(Str) = 5 then Result := +Str; if Length(Str) = 6 then Result := +Str; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 43 页 共 58 页 if Length(Str) = 7 then Result := +Str; if Length(Str) = 8 then Result := +Str; if Length(Str) = 9 then Result := +Str; if Length(Str) = 10 then Result := +Str; if Length(Str) = 11 then Result := +Str; if Length(Str) = 12 then Result := +Str; if Length(Str) = 13 then Result := +Str; if Length(Str) = 14 then Result := Str; end; end; function Tfrm_cp.BankShortBit(Str: String;Flag: Integer): String; /按银行格式要求设计的函数 begin if Flag = 0 then begin if Length(Str) = 4 then Result := Str + ; if Length(Str) = 6 then Result := Str + ; if Length(Str) = 8 then Result := Str; end; if Flag = 1 then begin if Length (Str) = 6 then Result := Str; if Length (Str) = 5 then Result := +Str; if Length (Str) = 4 then Result := +Str; if Length (Str) = 3 then Result := +Str; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 44 页 共 58 页 if Length (Str) = 2 then Result := +Str; if Length (Str) = 1 then Result := +Str; end; end; procedure Tfrm_cp.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin if (CanSelect) and (ARow StringGrid1.RowCount - 1) then if ARow 0 then SelRowCount := ARow; end; procedure Tfrm_cp.PopupMenu1Popup(Sender: TObject); begin if SelRowCount = -1 then N2.Enabled := False else N2.Enabled := True; end; procedure Tfrm_cp.Button4Click(Sender: TObject); /打印按钮事件 begin if Trim(StringGrid1.Cols0.Strings1) = then begin Application.MessageBox(没有可打印的数据! ,系统提示 ,mb_IconInformation+mb_OK); Exit; end; if Application.MessageBox( 确 认 要 打 印 吗 ?, 系统提示,mb_IconInformation+mb_OK+mb_OKCancel)=IDCancel then Exit; PrintStringGrid(StringGrid1,HX); /调用过程 PrintStringGrid end; procedure Tfrm_cp.Button3Click(Sender: TObject); /出盘回滚事件 var Sql,NextMonth,NowDate: String; begin NowDate := FormatDatetime(YYYYMMDDHHMMSS,Date); if Trim(Edit1.Text) Copy(NowDate,1,6) then /检查是否是当前月,只能回滚当月工资数据 begin Application.MessageBox(只能回滚当月的数据! ,系统提示 ,mb_IconInformation+mb_OK); Exit; end; 高等教育自学考试计算机信息管理专业本科生毕业论文 第 45 页 共 58 页 if Copy(Trim(Edit1.Text),5,2) = 12 then NextMonth := IntToStr(StrToInt(Copy(Trim(Edit1.Text),5,2)+1)+01 else NextMonth := IntToStr(StrToInt(Trim(Edit1.Text)+1); if Application.MessageBox(PChar( 确认将 +Edit1.Text+ 月的数据回滚吗 ?), 系统提示,mb_IconInformation+mb_OK+mb_OKCancel)=IDCancel then Exit; Sql := Delete From ygxjjgb Where yf=+NextMonth+; /从员工薪金结构表中删除数据 Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; Sql := update kjcsb set csdm=0 where yf=+Trim(Edit1.Text) + and csmc=出盘标志 ; Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; /修改控制参数表当月记录,置为 0 Sql := delete from kjcsb where yf=+NextMonth + and csmc=出盘标志 ; Query1.Close; Query1.Sql.Clear; Query1.Sql.Add(Sql); Query1.ExecSQL; /删除控制能数表中下个月控制记录 Application.MessageBox(PChar( 回滚 +Edit1.Text+ 月 的 数 据 成 功! ), 系 统 提 示,mb_IconInformation+mb_OK); end; function Tfrm_cp.ReturnNextMonth(Curr: Integer): String; /取下一个月函数 begin if StrToInt(Copy(IntToStr(Curr),5,2)+112 then Result := IntT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论