资源描述
Vfp课程设计汇报
人力资源管理系统
姓 名 张瑾、杨舒仪
学 院 人文和社会科学学院
专业班级 公共事业管理
学 号 、
指导老师 陈芬
Vfp人力资源管理系统设计汇报
一、系统总体计划
1、系统任务
人力资源管理是全部企业、企机关所必需,功效完善及操作方便人力资源管理系统,能够大大提升管理员工作效率,立即正确反应职员基础信息及薪酬情况,本系统是依据某高等学校人力资源进行设计,关键将人力资源统计从人工直接统计解放出来,利用计算机来统计,直接取得正确信息,使职员管理工作系统化、规范化、自动化。含有较强针对性和功效性。
2、系统功效
本系统采取面向对象设计思想,以菜单和表单形式进行各表单调用,关键完成以下功效:
(1)档案更新
l 人事统计增加;
l 人事统计修改;
l 人事统计删除;
l 人事统计浏览;
(2)档案统计
l 统计职员年纪情况
l 统计职员政治面目
l 统计职员婚姻情况
l 统计职员技术职务
l 统计职员文化程度
l 统计职员民族情况
l 统计职职员资情况
(3)档案输出
a.浏览查询
l 查询输出个人简历
l 查询输出家庭组员
l 查询输出人事卡片
l 查询输出社会关系
b. 正确查询
l 正确查询个人简历,家庭组员,人事卡片,社会关系
(4)修改密码
(5)报表打印
l 档案统计报表打印
l 档案输出报表打印
3、开发和运行环境
开发工具:Visual FoxPro 6.0
运行环境:Windows 9x 、Windows 、Windows XP
二、需求分析
人力资源管理系统设计最关键是各项功效健全,使用方便简练,界面友好。本套系统能够满足管理员对职员信息浏览、修改、查询、打印、统计等多项功效,操作简易。
三、系统框架
统计职员年纪
统计文化程度
统计政治面目
统计职职员资
统计技术职务
统计职员民族
统计婚姻情况
欢迎界面
登陆
主菜单
档案统计
档案更新
档案输出
修改密码
退出
人事统计更新
人事统计添加
人事统计删除
查询输出社会关系
查询输出个人简历
查询输出人事卡片
查询输出家庭组员
退出界面
正确
查询
四、小组组员分工
数据库创建
杨舒仪
表和视图创建
杨舒仪
各表之间关系建立
杨舒仪
欢迎界面
张瑾
登录设置
杨舒仪
修改密码
杨舒仪
数据输出
张瑾
数据更新
杨舒仪
数据统计
张瑾
正确查询
张瑾
报表设计
张瑾
结束界面
杨舒仪
表单整合
张瑾
Bug修正
张瑾
杨舒仪
菜单创建
张瑾
主程序编写
张瑾
系统美化
张瑾
杨舒仪
五、系统功效模块设计
1、登录模块
管理员经过输入正确用户名、密码、等级方可进入到主菜单,进入人事档案浏览、更新、统计、打印报表和修改密码等表单。
2、档案更新模块
(1)增加人事统计。可直接添加人事统计,依据提醒输入新人事数据,点击确定按钮保留至rskp表,代号反复时会有提醒,退出返回主菜单;
(2)修改人事统计。浏览人事统计过程中,随时能够经过点击编辑按钮进行修改,点击保留可保留修改后统计,退出返回主菜单;
(3)删除人事统计。浏览人事统计过程中,随时能够经过点击删除按钮删除这一条统计,退出返回主菜单。
3、档案输出模块
四张查询表单分别用于浏览输出职员个人简历、社会关系、家庭组员和人事基础信息,并可进行报表打印。
一张表单正确查询,输出任一代号人员相关信息。
4、档案统计模块
依据职员年纪、文化程度、技术职务、政治面貌、婚姻情况、民族、工资和进行统计。
5、修改密码模块
密码修改功效,该功效方便了用户对于本身密码定时修改要求,确保了信息安全。
六、数据库设计
1、数据库表结构设计
本系统建立数据库后,数据库中关键包含五个数据表:人事基础信息表、个人简历表、家庭组员信息表、社会关系信息表、管理人员表,其字段属性以下:
人事基础信息表rskp
字段名
标题
字段类型
宽度
小数位数
dh
代号
字符型
4
bm
部门
字符型
8
xm
姓名
字符型
8
xb
性别
字符型
2
xrzw
现任职务
字符型
10
csny
出生年月
日期型
8
mz
民族
字符型
8
jg
籍贯
字符型
10
zzmm
政治面目
字符型
8
zc
职称
字符型
6
whcd
文化程度
字符型
4
jkzk
健康情况
字符型
4
jtcs
家庭出身
字符型
10
brcf
本人成份
字符型
4
hyzk
婚姻情况
字符型
4
cjgzsj
参与工作时间
日期型
8
jbdwsj
进本单位时间
日期型
8
gz
工资
数值型
6
2
gzbt
工资补助
数值型
6
2
jtzz
家庭住址
字符型
20
nl
年纪
数值型
4
bz
备注
字符型
40
bh
编号
数值型
1
zh
职号
数值型
3
dm
代码
数值型
1
家庭组员表jtcy
字段名
标题
字段类型
宽度
小数位数
dh
代号
字符型
4
ybrgx
和本人关系
字符型
4
csny
出生年月
日期型
8
hyzk
婚姻情况
字符型
8
whcd
文化程度
字符型
8
zzmm
政治面目
字符型
8
gzdw
工作单位
字符型
10
zwgz
职务工种
字符型
10
gz
工资
数值型
6
2
jjly
经济起源
字符型
10
社会关系表shgx
字段名
标题
字段类型
宽度
小数位数
dh
代号
字符型
4
gxxm
关系姓名
字符型
6
ybrgx
和本人关系
字符型
4
zzmm
政治面目
字符型
4
gzdw
工作单位
字符型
20
zwgz
职务工种
字符型
6
bz
备注
字符型
20
个人简历表grjl
字段名
标题
字段类型
宽度
小数位数
dh
代号
字符型
4
kssj
开始时间
日期型
8
xm
结束时间
日期型
8
gzdw
工作单位
字符型
20
drzw
担任职务
字符型
10
管理人员表glry
字段名
标题
字段类型
宽度
小数位数
xm
姓名
字符型
8
mm
密码
字符型
6
dj
等级
字符型
2
2、关系设计
七、表单介绍及关键程序代码
本系统有24张表单,依据修要对每张表单autocenter、caption、fontsize、
titlebar等属性,并对表单进行了界面修饰和美化。关键表单有以下
1、 欢迎界面
运行“人力资源管理系统”可实施文件,首先会显示一个动态很漂亮欢迎界面。经过设置计时器,其标签“欢迎登录人力资源管理系统”从左上角缓缓移动至右下角,登录界面出现。
timer1事件代码:
if thisform.label1.left<=150
thisform.label1.left=thisform.label1.left+4
thisform.label1.top=thisform.label1.top+10
else
thisform.release
do form 欢迎登录
endif
2、 登录界面
输入正确管理员姓名、密码和等级显示“登录成功”,进入主菜单。假如不输入则会显示“姓名或密码不能为空,请重新输入”,假如输入错误,则会显示“用户不存在或密码等级错误”。
“登录”按钮click事件代码:
USE glry
IF EMPTY(THISFORM.TEXT1.VALUE).or.empty(THISFORM.TEXT2.VALUE)
MESSAGEBOX("用户名或密码不能为空,请重新输入",48,"系统提醒")
thisform.text2.SetFocus
ELSE
locate for alltrim(glry.xm)==alltrim(thisform.text1.value) and alltrim(glry.mm)==alltrim(thisform.text2.value) and alltrim(glry.dj)==alltrim(thisform.text3.value)
IF FOUND()
MESSAGEBOX("成功")
do form 菜单
thisform.release
ELSE
MESSAGEBOX("用户不存在或密码等级错误",46,"系统提醒")
thisform.text1.Value=""
thisform.text2.Value=""
thisform.text3.value=""
thisform.text2.SetFocus
ENDIF
ENDIF
3、 主菜单
主菜单是用户进入系统后关键接触界面,由它能够进入各个功效模块。分别单击按钮“档案更新”、“档案更新”、“档案输出”、“修改密码”可进入和之相对应功效模块,单击“退出”按钮退出本系统。为使界面不至于单调,给主界面加入图片作为背景。
4、档案更新
档案更新模块包含了“人事统计增加”、“人事统计修改”、“人事统计删除”多个功效模块,单击进入使用而且左侧会出现主菜单简练版(见下图)。单击“退出”即出现结束界面,退出本系统。
(1)人事统计增加
人事统计表单
“确定”按钮click事件代码:
set exclusive on
select rskp
if empty(alltrim(thisform.text1.value))
messagebox("代号不能为空",48,"错误")
thisform.text1.setfocus
else
dh1=alltrim(thisform.text1.value)
xm1=alltrim(thisform.text2.value)
xrzw1=alltrim(thisform.text3.value)
mz1=alltrim(thisform.text4.value)
zzmm1=alltrim(thisform.text5.value)
whcd1=alltrim(thisform.text6.value)
jtcs1=alltrim(thisform.text7.value)
bm1=alltrim(thisform.text8.value)
xb1=alltrim(thisform.text9.value)
csny1=ctod(allt(thisform.text10.value))
jg1=alltrim(thisform.text11.value)
zc1=alltrim(thisform.text12.value)
jkzk1=alltrim(thisform.text13.value)
brcf1=alltrim(thisform.text14.value)
gzbt1=val(allt(thisform.text15.value))
gz1=val(allt(thisform.text16.value))
zh1=val(allt(thisform.text17.value))
hyzk1=alltrim(thisform.text18.value)
jtzz1=alltrim(thisform.text19.value)
bh1=val(allt(thisform.text20.value))
dm1=val(allt(thisform.text21.value))
bz1=allt(thisform.text22.value)
jbdwsj1=ctod(allt(thisform.text23.value))
cjgzsj1=ctod(thisform.text24.value)
nl1=val(allt(thisform.text25.value))
set order to dh
seek dh1
if !found()
insert into rskp (dh,xm,xrzw,mz,zzmm,whcd,jtcs,bm,xb,csny,jg,zc,jkzk,brcf,gzbt,gz,zh,hyzk,jtzz,bh,dm,bz,jbdwsj,cjgzsj,nl)value(dh1,xm1,xrzw1,mz1,zzmm1,whcd1,jtcs1,bm1,xb1,csny1,jg1,zc1,jkzk1,brcf1,gzbt1,gz1,zh1,hyzk1,jtzz1,bh1,dm1,bz1,jbdwsj1,cjgzsj1,nl1)
messagebox("添加成功!",48,"信息")
thisform.text1.value=''
thisform.text2.value=''
thisform.text3.value=''
thisform.text4.value=''
thisform.text5.value=''
thisform.text6.value=''
thisform.text7.value=''
thisform.text8.value=''
thisform.text9.value=''
thisform.text10.value=''
thisform.text11.value=''
thisform.text12.value=''
thisform.text13.value=''
thisform.text14.value=''
thisform.text15.value=''
thisform.text16.value=''
thisform.text17.value=''
thisform.text18.value=''
thisform.text19.value=''
thisform.text20.value=''
thisform.text21.value=''
thisform.text22.value=''
thisform.text23.value=''
thisform.text24.value=''
thisform.text25.value=''
else
messagebox("此代号已存在,请另输一个",48,"错误")
thisform.text1.value=''
thisform.text1.setfocus
endif
endif
“取消”按钮click事件代码:
thisform.text1.value=''
thisform.text2.value=''
thisform.text3.value=''
thisform.text4.value=''
thisform.text5.value=''
thisform.text6.value=''
thisform.text7.value=''
thisform.text8.value=''
thisform.text9.value=''
thisform.text10.value=''
thisform.text11.value=''
thisform.text12.value=''
thisform.text13.value=''
thisform.text14.value=''
thisform.text15.value=''
thisform.text16.value=''
thisform.text17.value=''
thisform.text18.value=''
thisform.text19.value=''
thisform.text20.value=''
thisform.text21.value=''
thisform.text22.value=''
thisform.text23.value=''
thisform.text24.value=''
thisform.text25.value=''
thisform.text1.setfocus
“退出”按钮click事件代码:
thisform.release
do form 档案更新
(2)人事统计修改
Init事件代码:
thisform.text1.readonly=.t.
thisform.text2.readonly=.t.
thisform.text3.readonly=.t.
thisform.text4.readonly=.t.
thisform.text5.readonly=.t.
thisform.text6.readonly=.t.
thisform.text16.readonly=.t.
thisform.text17.readonly=.t.
thisform.text18.readonly=.t.
thisform.text19.readonly=.t.
thisform.text20.readonly=.t.
thisform.text21.readonly=.t.
thisform.text7.readonly=.t.
thisform.text8.readonly=.t.
thisform.text9.readonly=.t.
thisform.text10.readonly=.t.
thisform.text11.readonly=.t.
thisform.text12.readonly=.t.
thisform.text13.readonly=.t.
thisform.text14.readonly=.t.
thisform.text15.readonly=.t.
thisform.text22.readonly=.t.
thisform.text23.readonly=.t.
thisform.text24.readonly=.t.
thisform.text25.readonly=.t.
“第一个”按钮click事件代码:
goto top
mand1.enabled=.f.
mand2.enabled=.f.
mand3.enabled=.t.
mand4.enabled=.t.
thisform.refresh
“前一个”按钮click事件代码:
mand3.enabled=.t.
mand4.enabled=.t.
if not bof()
skip-1
if recno()=1
mand1.enabled=.f.
mand2.enabled=.f.
messagebox("已经到第一条统计了!",64,"提醒")
endif
endif
thisform.refresh
“下一个”按钮click事件代码:
mand1.enabled=.t.
mand2.enabled=.t.
if not eof()
skip 1
if recno()=reccount()
mand3.enabled=.f.
mand4.enabled=.f.
messagebox("已经到最终一条统计了!",64,"提醒")
endif
endif
thisform.refresh
“最终一个”按钮click事件代码:
goto bottom
mand1.enabled=.t.
mand2.enabled=.t.
mand3.enabled=.f.
mand4.enabled=.f.
thisform.refresh
“编辑”按钮click事件代码:
thisform.text2.readonly=.f.
thisform.text3.readonly=.f.
thisform.text4.readonly=.f.
thisform.text5.readonly=.f.
thisform.text6.readonly=.f.
thisform.text16.readonly=.f.
thisform.text17.readonly=.f.
thisform.text18.readonly=.f.
thisform.text19.readonly=.f.
thisform.text20.readonly=.f.
thisform.text21.readonly=.f.
thisform.text7.readonly=.f.
thisform.text8.readonly=.f.
thisform.text9.readonly=.f.
thisform.text10.readonly=.f.
thisform.text11.readonly=.f.
thisform.text12.readonly=.f.
thisform.text13.readonly=.f.
thisform.text14.readonly=.f.
thisform.text15.readonly=.f.
thisform.text22.readonly=.f.
thisform.text23.readonly=.f.
thisform.text24.readonly=.f.
thisform.text25.readonly=.f.
“保留”按钮click事件代码:
sele rskp
locate for dh=allt(thisform.text1.value)
repl xm with allt(thisform.text2.value)
repl xrzw with allt(thisform.text3.value)
repl mz with allt(thisform.text4.value)
repl zzmm with allt(thisform.text5.value)
repl whcd with allt(thisform.text6.value)
repl jtcs with allt(thisform.text7.value)
repl bm with allt(thisform.text8.value)
repl xb with allt(thisform.text9.value)
repl csny with thisform.text10.value
repl jg with allt(thisform.text11.value)
repl zc with allt(thisform.text12.value)
repl jkzk with allt(thisform.text13.value)
repl brcf with allt(thisform.text14.value)
repl gzbt with thisform.text15.value
repl gz with thisform.text16.value
repl zh with thisform.text17.value
repl hyzk with allt(thisform.text18.value)
repl jtzz with allt(thisform.text19.value)
repl bh with thisform.text20.value
repl dm with thisform.text21.value
repl bz with thisform.text22.value
repl jbdwsj with thisform.text23.value
repl cjgzsj with thisform.text24.value
repl nl with thisform.text25.value
thisform.text2.readonly=.t.
thisform.text3.readonly=.t.
thisform.text4.readonly=.t.
thisform.text5.readonly=.t.
thisform.text6.readonly=.t.
thisform.text16.readonly=.t.
thisform.text17.readonly=.t.
thisform.text18.readonly=.t.
thisform.text19.readonly=.t.
thisform.text20.readonly=.t.
thisform.text21.readonly=.t.
thisform.text7.readonly=.t.
thisform.text8.readonly=.t.
thisform.text9.readonly=.t.
thisform.text10.readonly=.t.
thisform.text11.readonly=.t.
thisform.text12.readonly=.t.
thisform.text13.readonly=.t.
thisform.text14.readonly=.t.
thisform.text15.readonly=.t.
thisform.text22.readonly=.t.
thisform.text23.readonly=.t.
thisform.text24.readonly=.t.
thisform.text25.readonly=.t.
(3)人事统计删除
Init事件代码同“人事统计编辑”表单
“第一个”、“前一个”、“下一个”、“最终一个”按钮click事件代码同“人事统计修改表单”。
“删除”按钮click事件代码:
use rskp exclusive
mb=messagebox("确定要删除吗?",1+64,"提醒")
if mb==1
delete from rskp where dh=thisform.text1.value
pack
messagebox("删除成功",64,"提醒")
endif
go top
thisform.refresh
5、档案统计
点击对应命令按钮进入对应统计表单。比如:
“统计技术职务”按钮click事件代码:
thisform.release
do form 技术职务统计
点击进入以下界面:
此表数据环境为:rskp
“统计”代码为:
select rskp
do case
case empty(thisform.text1.value) and empty(bo1.value)
select bm as 部门,zc as 职称,count(*) as 人数 from rskp group by bm,zc order by bm into cursor tj2
case !empty(bo1.value) and empty(thisform.text1.value)
select bm as 部门,zc as 职称,count(*) as 人数 from rskp where zc=bo1.value group by bm order by bm into cursor tj2
case !empty(thisform.text1.value) and empty(bo1.value)
select bm as 部门,zc as 职称,count(*) as 人数 from rskp where bm=thisform.text1.value group by zc order by bm into cursor tj2
case !empty(thisform.text1.value) and !empty(bo1.value)
select bm as 部门,zc as 职称,count(*) as 人数 from rskp where bm=thisform.text1.value and zc=bo1.value group by zc order by bm into cursor tj2
endcase
thisform.grid1.visible=.t.
thisform.grid1.recordsourcetype=1
thisform.grid1.recordsource="tj2"
thisform.grid1.column1.width=75
thisform.grid1.column2.width=75
thisform.grid1.column3.width=75
thisform.refresh
表格recordsourcetype属性为4—SQL说明,
下拉组合框rowsourcetype属性设置为3—SQL语句,rowsource为select distinct zc from rskp into cursor zc
在text1中输入“英语”,职称中选择“中级”,点击“统计”,结果以下:
其它统计报表原理和此相同。
6、档案输出
点击对应命令按钮进入对应统计表单。比如:
“查询输出社会关系”按钮click事件代码:
thisform.release
do form 查询输出社会关系
点击进入下面表单:
此表数据环境为shgx和rskp
Text1controlsource为rskp.dh,
Text2controlsource为rskp.bm,
Text3controlsource为rskp.xm,
Grid1recordsource为temp1
Recordsourcetype为1-别名
Commandgroup1click事件代码为:
select rskp
do case
case this.value=1
go top
mand1.enabled=.f.
mand2.enabled=.f.
mand3.enabled=.t.
mand4.enabled=.t.
thisform.refresh
case this.value=2
mand3.enabled=.t.
mand4.enabled=.t.
skip -1
if recno()=1
mand1.enabled=.f.
mand2.enabled=.f.
endif
thisform.refresh
case this.value=3
mand1.enabled=.t.
mand2.enabled=.t.
skip
if recno()=reccount()
mand3.enabled=.f.
mand4.enabled=.f.
endif
thisform.refresh
case this.value=4
goto bottom
mand1.enabled=.t.
mand2.enabled=.t.
mand3.enabled=.f.
mand4.enabled=.f.
thisform.refresh
case this.value=5
report form 社会关系.frx for alltrim(shgx.dh)=ALLTRIM(ThisForm.text1.value) preview
case this.value=6
thisform.release
do form 档案输出
case this.value=7
select shgx
x=thisform.text1.value
thisform.grid1.recordsourcetype=4
展开阅读全文