基于delphi的公司人事管理系统的设计与实现内容摘要:

Image 16 照片 ssbm Varchar 50 所属部门 gz Varchar 10 工种 zw Varchar 10 职务 zc Varchar 20 职称 jbgz Float 8 基本工资 qtgz Float 8 其它工资 drsj Datetime 8 调入时间 jl Varchar 200 简历 djrq Datetime 8 登记日期 各功能模块的实现 数据 模块设计 数据模块窗体主要功能是统一管理数据库访问组件, 在本系统中,这个模块是最重要的模块,其他模块都要通过这个模块中的组件访问数据库,虽然只有简单的组件属性设置, Delphi自动生成代码,但是不容有误。 数据模块如图 3所示 : 图 3 数据模块 此模块的设计步骤如下: ( 1)在 Delphi中选择“ File” /“ New” /“ Data Module”菜单项,新建一个数据模块,命名为“ Data1”。 ( 2)在“ ADO”组件页中点选“ TADOConnection”组件,添加到窗体上,TADOConnection组件用到连接数据库,其它数据库组件通过它连接数据库。 ( 3)点选 ADOConnection1组件,在“ Object Inspector”窗口中,单击ConnectionString属性右侧的【„】按钮,弹出对话框如图 4所示。 图 4 数据连接对话框 ( 4)单击【 Build】按钮,在弹出的对话框中的“提供程序”选项卡中设置希望连接的数据,如图 5 所示。 图 5 连接属性对话框 ( 5)选择“连接”选项卡,设置连接相关设置,如图 6所示。 图 6 连接属性对话框 ( 6)单击【测试连接】按钮,如果连接成功,则提示成功,单击【确定】按钮完成数据库的连接。 ( 7)在窗体上添加 TADOQuery组件,设置 Connection为 “ ADOConnection1”。 这里的每个 TADOQuery组件连接一个数据表。 登录 界面的设计 登录 界 面 主要是用于对用户进行安全性检查,以防止非法用户进入该系统。 只有合法的用户,才可以进入系统。 验证操作员及其密码。 主要是通过对数据表中的操作员信息表的查询,判断用户输入的密码是否符合数据库中的信息,如果符合则允许登录;否则会有相应的提示。 为了安全本系统会在三次错误之后自动关闭。 图 7 登录 界面 此模块的设计步骤如下: ( 1)新建一个窗 体 ,命名为“ frm_Login”,设置 Caption 属性为“登录”,设置 Position 属性为“ poScreenCenter”。 ( 2)在“ Additional”组件页中点 选“ TImage”组件,添加到窗体上,设置Align 属性为“ alClient”; Stretch 属性为“ Tree”,在 Pictuer 属性中添加图片。 ( 3)在“ Standard”组件页中点选“ TEdit”组件,添加到窗体上,设置 Ctl3D属性为“ False”;设置 Text 属性为空,设置 Edir2 的 PasswordChar 属性为“ *”。 ( 4)在“ Additional”组件页中点选“ TSpeedButton”组件,添加到窗体上,设置 Caption 属性分别为“登录”和“取消”;设置 Flat 属性为“ True”。 此 模块调用了数据模块中的 ADOquery 组件连接数据库,然后用 select 语句对操作员信息这张数据表进行操作。 对数据库的操作主要由以下代码实现: with do begin close。 (39。 select * from 操作员信息表 where 操作员名称 = :a and 操作员密码 = :b39。 )。 //使用 SQL语句检索数据表中的用户名和密码 (39。 a39。 ).Value:=trim()。 (39。 b39。 ).Value:=trim()。 open。 end。 这里将输入的用户名和密码与操作员信息表中的操作员名称和操作员密码进行比较,如果两者相同才能进入本系统。 新员工登记模块设计 新员工登记模块,主要用于添加、修改新员工的个人基本信息,如:姓名、性别、民族、文化程度等。 新员工登记模块运行结果如图 8 所示。 图 8 新 员工登记模块 此模块设计如下: ( 1)新建一个窗体,命名为“ frm_xygdj”,设置 Caption 属性为“新员工登记”,设置 Position 属性为“ poScreenCenter”。 ( 2)在窗体中添加“ TPanel”组件、“ TGroupBox”组件、“ TEdit”组件、“ TCombobox” 组件、“ TLabel”组件、“ TMaskEdit”组件、“ TMemo”组件、“ TBitbtn”组件、“ TImage”组件,设置属性如表 5所示。 表 5 主要组件属性设置 组件名称 所在组件页 属性 值 Panel1 Standard Align Bevellnner BevelOuter alClient bvSpace bvLowered Panel2 Standard Align Bevellnner BevelOuter alNone bvSpace bvLowered Panel3 Standard Align Bevellnner BevelOuter alNone bvSpace bvLowered Groupbox1 Standard Caption 基本信息 Groupbox2 Standard Caption 其它信息 MaskEdit Additional Ctl3D EditMask False !9999/99/00。 1。 _ Image Additional Align Stretch alClient Ture 此模块调用数据模块中的 ADOquery 组件连接数据库中的人事表。 “保存”按钮的功能主要是通过 Insert 语句向数据库中插入和添加数据,这段 Insert 语句如下: with do begin close。 (39。 insert 人 事表 values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r,:s,:t,:u,:v,:w,:x,:y,:z,:aa,:ab,:ac,:ad,:ae,:af)39。 )。 这里需要注意的是在“ insert 人事表 values”后面的括号中的项目数要与数据表中的字段数目相同,因为这是向数据表中依次插入数据,如果不相同就会出错。 在编辑框的 OnChange 事件中添加如下代码,用来控制保存 按钮的使用,如果没有完全填写信息, bitbtn 的 Enabled 属性就设置为 false,则设置 【保存】按钮不可用。 这部分判断输入是否为空的实现如下: procedure (Sender: TObject)。 begin if (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and(39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and(39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and(39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and(39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and(39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) and (39。 39。 ) then :=true else :=false。 end。 在窗体的 OnShow 事件中添加如下代码,用来向下拉列表框( TCombobox)组件添加数据表中的数据, 为了避免下拉列表框中出现重复,这里用了 select distinct 语句,以民族为例。 with do begin close。 (39。 select distinct 民族 from 民族表 39。 )。 open。 end。 while Not do //在不是最后一条记录时进行循环 begin ((39。 民族39。 ).Value)。 //将指针指向下一条记录 end。 此模块中的,婚姻状况、文化程度等所有下拉列表框的实现都是这样,这里不再重复。 在一个企业里,难免会用重名的员工,所 以姓名不能作为员工的唯一标识,那么如果用员工编号来做唯一标识,就可以解决这个问题了。 人为的编号也难免会出错,所以在这里我们设置单击“添加”按钮自动生成员工编号。 这个功能实现,首先需要使用 select语句在人事表中找到最大的编号,实现如下: begin Close。 (39。 select max(bh) as ss From 人事表 39。 )。 Open。 end。 当然,如果是第一次添加新员工,返回值为空时,编号就由 001开始编排。 If (39。 ss39。 ).Value = null then s :=’ mr’ +39。 00139。 如果不为空就需要分情况进行处理,这里实现代码如下: m:= Trim((39。 ss39。 ).Value)。 n:= StrToInt(copy(m,4,2))。 //将 m的值从第 4位取 2位变为整形 if n9 then s:= s+39。 0039。 + InttoStr(n +1) else if n99 then s:=s+39。 039。 + InttoStr(n +1) else s:= s+InttoStr(n +1)。 这样就有效的避免了人为操作的输入失误。 工资设置 模块设计 工资设置模块主要用于设置员工的工资信息,此窗体中主要应用的也是基本的 SQL 语句 Insert 向数据中插入数据。 工资设置模块运行结果如图 9 所示。 图 9 工资设置 模块 此模块主要用了以下的组件: “ TPanel”组件 、 “ TGroupBox”组件 、 “ TLabel”组件 、 “ TEdit”组件 、 “ TCombobox”组件 、 “ TCheckBox”组件 、 “ TBitBtn”组件 、 “ TDataSource”组件 、 “ TDBGrid”组件 ,其中 “ TDataSource”组件 、“ TDBGrid”组件 两个组件是显示数据库中内容的组件在运行时是看不到的。 工资设置模块连接数据库也和其他模块一样用的是数据模块中的 ADOquery组件。 此模块在“员工编号”的下拉列表框中选中选择编号后员工姓名的列表框中的自动变为相对应的姓名,这个功能首先也是用的 select 语句对数据库进行查询。 查询代码如下: begin close。 (39。 select * from 人事表 where bh=:a39。 )。 (39。 a39。 ).Value:=。 open。 end。 然后再将查询到的行中的“姓名”字段中的值赋给模块中的姓名后的bobox 组件的 text 属性,由下面一条代码完成。 :=(39。 xm39。 ).Value。 本系统能够通过输入工资来对所要交纳的个人所得税的级别来进行判断,这需要在基本工资后的 OnChange 事件中添加代码。 首先同样是用 select 语句查询个人所得税表,然后执行以下代码: while not do begin if (strtofloat()=(39。 应纳所得税金额下限 39。 ).Value) and (strtofloat()(39。 应纳所得税金额上限 39。 ).Value) then :=(39。 级别号 39。 ).Value。 end。 这段代码中运用了 ADOquery 组件的 Eof属性返回数据集的最后一条记录、ADOquery 组件的 Next 属性返回数据集中当前记录的下一条记录,这两个属性主要是实现对数据表的逐一查询。 主窗体 设计 主窗体中主要控制方式 是通过菜单和工具栏按钮来调用子窗体,它的背景区由一幅图片填充。 人事管理系统 主窗体运行结果如图 10所示。 图 10 人事管理系统 主窗体 此窗体的设计主要运用了以下组件: “ TMainMenu”组件 、 “ TCoolBar”组件 、 “ TSpeenButton”组件 、 “ TPanel”组件 、 “ TImage”组件 、 “ TOpenDialog”组件 和“ TS。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。