工资管理系统设计方案.docx
《工资管理系统设计方案.docx》由会员分享,可在线阅读,更多相关《工资管理系统设计方案.docx(73页珍藏版)》请在冰豆网上搜索。
工资管理系统设计方案
工资管理系统设计方案
一、需求分析:
二、数据结构:
表名:
HISTORYDATA.DBF作用:
历史数据
字段名称
数据类型
长度
小数位数
中文注释
BM_ID
Character
3
部门编号
ZG_ID
Character
6
职工编号
ZGXM
Character
10
职工姓名
JBGZ
Numeric
8
2
基本工资
JIAOLIN
Integer
4
教龄
TIETEN
Numeric
6
2
贴10
JIATIE
Numeric
6
价贴
DIPU
Numeric
6
1
地补
CHETIE
Numeric
6
2
车贴
DUSHEN
Numeric
6
1
独生
FANGTIE
Numeric
6
1
房贴
CHUNTIE
Numeric
6
1
纯贴
GANGTIE
Numeric
6
岗贴
SHUBAOFEI
Numeric
6
书报费
JIAOTIE
Integer
4
教贴
TIETHIRTY
Numeric
6
贴30
YITIE
Integer
4
医贴
GONGTIE
Integer
4
工贴
QITA
Numeric
6
其他
YINGFA
Numeric
8
2
应发
HUIFEI
Numeric
6
2
会费
XIANXUE
Integer
4
献血
GONGJIJIN
Numeric
8
2
公积金
YAOLAOJIN
Numeric
8
2
养老金
SUODESUI
Numeric
6
2
所得税
YIBAO
Numeric
6
1
医保
SHIBAO
Numeric
6
1
失保
QITATWO
Numeric
8
2
扣其他
GONGKOU
Numeric
8
2
共扣
SHIFA
Numeric
8
2
实发
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
表名:
PAUSECASH.DBF作用:
职工停发表(用于存放暂时停发工资的职工数据)
字段名称
数据类型
长度
小数位数
中文注释
BM_ID
Character
3
部门编号
ZG_ID
Character
6
职工编号
ZGXM
Character
10
职工姓名
JBGZ
Numeric
8
2
基本工资
JIAOLIN
Integer
4
教龄
TIETEN
Numeric
6
2
贴10
JIATIE
Numeric
6
价贴
DIPU
Numeric
6
1
地补
CHETIE
Numeric
6
2
车贴
DUSHEN
Numeric
6
1
独生
FANGTIE
Numeric
6
1
房贴
CHUNTIE
Numeric
6
1
纯贴
GANGTIE
Numeric
6
岗贴
SHUBAOFEI
Numeric
6
书报费
JIAOTIE
Integer
4
教贴
TIETHIRTY
Numeric
6
贴30
YITIE
Integer
4
医贴
GONGTIE
Integer
4
工贴
QITA
Numeric
6
其他
YINGFA
Numeric
8
2
应发
HUIFEI
Numeric
6
2
会费
XIANXUE
Integer
4
献血
GONGJIJIN
Numeric
8
2
公积金
YAOLAOJIN
Numeric
8
2
养老金
SUODESUI
Numeric
6
2
所得税
YIBAO
Numeric
6
1
医保
SHIBAO
Numeric
6
1
失保
QITATWO
Numeric
8
2
扣其他
GONGKOU
Numeric
8
2
共扣
SHIFA
Numeric
8
2
实发
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
表名:
GSINFO.DBF作用:
使用单位的情况
字段名称
数据类型
长度
小数位数
中文注释
COMPNM
Character
40
公司名称
ADDRESS
Character
40
公司地址
TELPHONE
Character
10
电话号码
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
表名:
DEPART.DBF作用:
部门情况表
字段名称
数据类型
长度
小数位数
中文注释
BM_ID
Character
3
部门编号
BM_NAME
Character
20
部门名称
BM_LEADER
Character
10
负责人
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
表名:
EMPLOYEE.DBF作用:
职工情况表
字段名称
数据类型
长度
小数位数
中文注释
BM_ID
Character
3
部门编号
ZG_ID
Character
6
职工编号
ZGXM
Character
10
职工姓名
DUTY
Character
20
职务
ISUSED
Logical
1
是否停发
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
表名:
GZDATA作用:
当月数据表
字段名称
数据类型
长度
小数位数
中文注释
BM_ID
Character
3
部门编号
ZG_ID
Character
6
职工编号
ZGXM
Character
10
职工姓名
JBGZ
Numeric
8
2
基本工资
JIAOLIN
Integer
4
教龄
TIETEN
Numeric
6
2
贴10
JIATIE
Numeric
6
价贴
DIPU
Numeric
6
1
地补
CHETIE
Numeric
6
2
车贴
DUSHEN
Numeric
6
1
独生
FANGTIE
Numeric
6
1
房贴
CHUNTIE
Numeric
6
1
纯贴
GANGTIE
Numeric
6
岗贴
SHUBAOFEI
Numeric
6
书报费
JIAOTIE
Integer
4
教贴
TIETHIRTY
Numeric
6
贴30
YITIE
Integer
4
医贴
GONGTIE
Integer
4
工贴
QITA
Numeric
6
其他
YINGFA
Numeric
8
2
应发
HUIFEI
Numeric
6
2
会费
XIANXUE
Integer
4
献血
GONGJIJIN
Numeric
8
2
公积金
YAOLAOJIN
Numeric
8
2
养老金
SUODESUI
Numeric
6
2
所得税
YIBAO
Numeric
6
1
医保
SHIBAO
Numeric
6
1
失保
QITATWO
Numeric
8
2
扣其他
GONGKOU
Numeric
8
2
共扣
SHIFA
Numeric
8
2
实发
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
表名:
USERTABLE.DBF作用:
用户表
字段名称
数据类型
长度
小数位数
中文注释
USER_ID
Integer
4
用户编号
USERNM
Character
10
用户名
PASSWORD
Character
10
密码
LEVEL
Numeric
1
用户级别
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
表名:
AUTOFIELD.DBF作用:
编号增加表
字段名称
数据类型
长度
小数位数
中文注释
BM_ID
Numeric
3
当前部门编号
表名:
FIELDCOVERT.DBF作用:
字段对应表
字段名称
数据类型
长度
小数位数
中文注释
CHINAFIELD
Character
10
字段中文名
FIELDNM
Character
10
字段名
表名:
KOUJIAN.DBF作用:
职工收入计算个人调节税应扣减的金额
字段名称
数据类型
长度
小数位数
中文注释
KOUJIAN
Numeric
7
2
扣减额度
表名:
TAXSET.DBF作用:
个人调节税率表
字段名称
数据类型
长度
小数位数
中文注释
TAX_ID
Integer
4
序号
LIMITUP
Numeric
7
上限
LIMITDOWN
Numeric
7
下限
TAX
Numeric
2
税率
QUICKJE
Numeric
5
速算扣除数
ENTDATE
Date
8
编辑日期
OPERATOR
Character
10
操作员
三、程序源代码:
本程序大量使用了封装类,类的定义如下:
类存放在..\classlibs\myclass.vcx中
appform类:
增加了一个属性opcode,其作用是来标识操作,它有以下几个值供选择
1-增加,2-修改,3-查询(默认)
appeditbutton类:
自定义公共属性:
mainalias—作用工作表,refreshobj—刷新对象,setfocusobj—默认焦点位置
自定义公共方法:
OnOffBtn—打开或关闭相关的按钮,代码如下:
LPARAMETERSmyselect
DOCASE
CASEmyselect=1&&初始状态
This.CmdAdd.Enabled=.T.
This.CmdModi.Enabled=.T.
This.CmdFind.Enabled=.T.
This.CmdDel.Enabled=.T.
This.CmdSave.Enabled=.F.
This.CmdCancel.Enabled=.F.
CASEmyselect=2&&修改状态
This.CmdAdd.Enabled=.F.
This.CmdModi.Enabled=.F.
This.CmdDel.Enabled=.F.
This.CmdFind.Enabled=.T.
This.CmdSave.Enabled=.T.
This.CmdCancel.Enabled=.T.
ENDCASE
按钮<(F2)新增>Click事件
**********************
*定义几个局部变量
*mytest&&是否使用了缓冲
*oldsele&&原工作表区
*objrefresh&&要更新是表单对像
*tblmainalias&&作用工作表名
*objfoucs&&获得焦点的对象
********************
*测试是否使用了缓冲*
********************
mytest=CURSORGETPROP("Buffering")
IFINLIST(mytest,0,1)
=MessageBox("使用本自定义类必须使用数据缓冲"+CHR(13)+CHR(13)+"请在数据环境中设置",16,"提示")
RETURN
ENDIF
Localoldsele,objrefresh
******************************
*根据表单中定义的各种属性
*将这些属性加入至临时对象
******************************
oldsele=SELECT()
objrefresh=This.Parent.refreshobj
tblmain=This.Parent.mainalias
objfocus=This.Parent.setfocusobj
********************
*自动设置有关的属性*
********************
IFTYPE("ThisFormSet")="U"
ThisForm.opcode=1
ELSE
ThisFormSet.opcode=1
ENDIF
********************
*打开或关闭有关按钮*
********************
This.Parent.OnOffbtn
(2)
****************
*增加一条新记录*
****************
SELECT(tblmain)
APPENDBLAN
&objrefresh..Refresh
&objfocus..SetFocus
SELECT(oldsele)
按钮<(F3)修改>Click事件
*定义几个局部变量
*mytest&&是否使用了缓冲
*oldsele&&原工作表区
*objrefresh&&要更新是表单对像
*tblmainalias&&作用工作表名
*objfoucs&&获得焦点的对象
********************
*测试是否使用了缓冲*
********************
mytest=CURSORGETPROP("Buffering")
IFINLIST(mytest,0,1)
=MessageBox("使用本自定义类必须使用数据缓冲"+CHR(13)+CHR(13)+"请在数据环境中设置",16,"提示")
RETURN
ENDIF
Localoldsele,objrefresh
******************************
*根据表单中定义的各种属性
*将这些属性加入至临时对象
******************************
oldsele=SELECT()
objrefresh=This.Parent.refreshobj
tblmain=This.Parent.mainalias
objfocus=This.Parent.setfocusobj
********************
*自动设置有关的属性*
********************
IFTYPE("ThisFormSet")="U"
ThisForm.opcode=2
ELSE
ThisFormSet.opcode=2
ENDIF
********************
*打开或关闭有关按钮*
********************
This.Parent.OnOffbtn
(2)
****************
*增加一条新记录*
****************
SELECT(tblmain)
&objrefresh..Refresh
&objfocus..SetFocus
SELECT(oldsele)
按钮<(F4)删除>Click事件
**********************
*定义几个局部变量
*mytest&&是否使用了缓冲
*oldsele&&原工作表区
*objrefresh&&要更新是表单对像
*tblmainalias&&作用工作表名
*objfoucs&&获得焦点的对象
********************
*测试是否使用了缓冲*
********************
mytest=CURSORGETPROP("Buffering")
IFINLIST(mytest,0,1)
=MessageBox("使用本自定义类必须使用数据缓冲"+CHR(13)+CHR(13)+"请在数据环境中设置",16,"提示")
RETURN
ENDIF
Localoldsele,objrefresh
******************************
*根据表单中定义的各种属性
*将这些属性加入至临时对象
******************************
oldsele=SELECT()
objrefresh=This.Parent.refreshobj
tblmain=This.Parent.mainalias
objfocus=This.Parent.setfocusobj
**************
*删除一条记录*
**************
SELECT(tblmain)
result=MessageBox("确定要删除这条记录吗?
",32+4+256,"提示")
IFresult=6THEN
DELETE
=TableUpdate(.F.)
ENDIF
********************
*自动设置有关的属性*
********************
IFTYPE("ThisFormSet")="U"
ThisForm.opcode=3
ELSE
ThisFormSet.opcode=3
ENDIF
&objrefresh..Refresh
SELECT(oldsele)
按钮<(F6)保存>Click事件
**********************
*定义几个局部变量
*mytest&&是否使用了缓冲
*oldsele&&原工作表区
*objrefresh&&要更新是表单对像
*tblmainalias&&作用工作表名
*objfoucs&&获得焦点的对象
********************
*测试是否使用了缓冲*
********************
mytest=CURSORGETPROP("Buffering")
IFINLIST(mytest,0,1)
=MessageBox("使用本自定义类必须使用数据缓冲"+CHR(13)+CHR(13)+"请在数据环境中设置",16,"提示")
RETURN
ENDIF
Localoldsele,objrefresh
******************************
*根据表单中定义的各种属性
*将这些属性加入至临时对象
******************************
oldsele=SELECT()
objrefresh=This.Parent.refreshobj
tblmain=This.Parent.mainalias
objfocus=This.Parent.setfocusobj
******************
*保存编辑过的记录*
******************
SELECT(tblmain)
result=MessageBox("确定要保存所做的修改吗?
",32+4,"提示")
IFresult=6THEN
********************
*自动设置有关的属性*
********************
IFTYPE("ThisFormSet")="U"
ThisForm.opcode=3
ELSE
ThisFormSet.opcode=3
ENDIF
********************
*打开或关闭有关按钮*
********************
This.Parent.OnOffbtn
(1)
=TableUpdate(.T.)
&objrefresh..Refresh
ENDIF
SELECT(oldsele)
按钮<(F7)放弃>Click事件
**********************
*定义几个局部变量
*mytest&&是否使用了缓冲
*oldsele&&原工作表区
*objrefresh&&要更新是表单对像
*tblmainalias&&作用工作表名
*objfoucs&&获得焦点的对象
********************
*测试是否使用了缓冲*
********************
mytest=CURSORGETPROP("Buffering")
IFINLIST(mytest,0,1)
=MessageBox("使用本自定义类必须使用数据缓冲"+CHR(13)+CHR(13)+"请在数据环境中设置",16,"提示")
RETURN
ENDIF
Localoldsele,objrefresh
******************************
*根据表单中定义的各种属性
*将这些属性加入至临时对象
******************************
oldsele=SELECT()
objrefresh=This.Parent.refreshobj
tblmain=This.Parent.mainalias
objfocus=This.Parent.setfocusobj
****************
*增加一条新记录*
****************
SELECT(tblmain)
result=MessageBox("确定要放弃所做的修改吗?
",32+4+256,"提示")
IFresult=6
=TableRevert(.T.)
********************
*自动设置有关的属性*
********************
IFTYPE("ThisFormSet")="U"
IFThisForm.opcode=1
GOTOBOTTOM
ENDIF
ThisForm.opcode=3
ELSE
IFThisFormSet.opcode=1
GOTOBOTTOM
ENDIF
ThisFormSet.opcode=3
ENDIF
&objrefresh..Refresh
*****************