课程设计工资管理系统Word格式.docx
《课程设计工资管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计工资管理系统Word格式.docx(40页珍藏版)》请在冰豆网上搜索。
1.工资管理系统是一个企业单位不可或缺的部分,他能为用户提供充足的信息和快捷的查询手段。
2.一个工资管理系统可以高效能、大容量的收集、处理、存储工资管理信息,大幅度的工资管理信息系统的工作质量和效率。
3.能够为企业管理人员及时掌握整个工资管理系统的全面情况,提供系统的准确的工资管理信息,可以促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全。
4.为企业提供各种加工管理了工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍建设提出的新要求,帮助管理人员选择方案,实现优化决策。
虽然当前,不少单位的工资管理部门对于计算机应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大。
2.2系统功能需求分析
工资管理系统涉及到员工基本信息的录入、修改和删除,工资标准的设定、查询和结算等。
典型的工资管理系统主要有以下基本功能:
a.员工基本信息的录入、修改、删除等功能
b.工资标准的设定功能,集体包括职务工资、职称工资以及其他工资标准的设定。
c.工资信息的浏览
d.员工工资信息表的创建
e.工资调整管理
f.工资统计
2.3系统需求分析和目标
企业工资管理系统可以用于支持企业完成工资管理工资,有如下3个方面的目标。
1.支持企业实现规范化的管理。
2.支持企业高效率完成人事管理的日常业务,包括新员工加入时人事档案的建立,老员工转出、辞职、退休等。
3.支持企业进行人事管理及其相关方面的科学决策,如企业领导根据现有的员工合同期限决定是否继续聘用等。
第三章概要设计
通过分析,将工资管理系统分为六个模块:
人事档案管理模块、职工工资管理模块、工资统计模块的实现、部门查询模块、特殊查询模块、报表查询模块
对六个模块做具体说明:
人事基本信息管理模块:
输入:
职员信息
输出:
“人员档案表”
功能:
对人事基本信息的查询
职工工资管理模块
输入:
人员月工资
输出:
“职工工资表”
功能:
完成员工工资的查询
工资统计模块
输出:
“职工工资统计表”
完成员工工资的统计和打印
部门查询模块
以部门为索引的“职工档案信息”
完成以部门为索引的“职工档案信息”的统计和查询
特殊查询模块的实现
满足查询条件的“职工档案信息”和职工合同的期限
完成满足查询条件的“职工档案信息”和职工合同的期限的查询
报表查询模块的实现
员工履历信息和工资信息基本情况的查询及打印功能
完成员工履历信息和工资信息基本情况的查询及打印功能
3.1系统业务流程图
3.2参与者列表
工资核算员:
系统的主要使用者,完成工资核算、工资发放、工资转账和银行代发各项业务。
人事部门:
维护员工信息、处理员工信息定义和员工档案管理的部门。
3.3用例图
3.4系统数据库概念结构
3.5数据流图
3.4.1底层数据流图
图3.4.2工资管理第一层数据流图
图3.4.3工资管理的展开
图3.4.4本月工资管理的展开
第四章详细设计
4.1系统处理流程和数据流程
4.2类设计
1.业务服务
1、定义员工信息并管理员工档案
2、定义工资项目
3、输入工资数据
4、根据实际情况定义所得税率
5、确认信息后,生成纳税申报表
6、定义银行代发工资格式
7、形成工资代发资料
8、查看员工工资发放情况(通过查看工资条)
9、生成发款单和工资条
10、定义核算科目
11、生成核算凭证
12、查看各工资信息进行月末处理
2.类图
经过分析可知类图如下所示:
1、职工(工资)信息的类图:
3.属性及操作列表
1、职工(工资)信息的属性及操作:
4.3状态图
系统在运行过程中,会出现各种外部事件,从而触发不同的状态。
系统的状态图如下所示:
4.4业务服务的实现
工资管理系统提供的各种服务都是建立在分布、开放的信息结构之上,依托高速、可靠的网络环境来完成。
没想服务都可以看成一个事件流,由若干相关的对象交互合作来完成。
对于这种系统内部的协作关系和过程细微,可以通过绘制顺序图来帮助观察和理解。
具体开说,每个系统用例都用一个或多个顺序图来说明功能的实现。
顺序图如下:
1.工资核算员
(1)工资项目定义时序图
(2)工资项目定义时序图
(3)多次发放工资时序图
(4)工资发放时序图
(5)发款单时序图
(6)工资条时序图
(7)核算科目定义时序图
(8)核算凭证生成时序图
(9)工资数据输入时序图
(10)工资月末处理时序图
2.人事部门
(1)员工档案管理时序图
(2)员工信息定义时序图
4.5用户界面设计
本系统的用户界面用java编写,主要由1个主界面和10个辅助对话框组成。
主界面集合系统主要基本功能按键,辅助对话框负责采集用户输入信息和做基本的信息处理。
下图为主界面,其他界面参见系统测试.
4.6数据库设计
4.6.1数据录入功能
主要任务是对各种工资信息进行日常的管理,如工资信息的输入、查询、修改、增加、删除,迅速准确地完成各种工资信息的统计计算和汇总,快速打印出报表。
4.6.2.数据查询功能
系统需要提供以下查询功能:
1.员工考勤情况
2.员工工种情况,反映员工的工种、等级,岗位工资等信息
3.员工津贴信息情况,反映员工的加班时间,加班类别、加班天数、岗位补贴情况等
4.员工基本信息情况
5.员工月工资情况:
年,月,职工号,姓名,部门名,基本工资,病假扣款,事假扣款,3.应发工资,实发工资
4.6.3.数据统计功能
1.统计员工年终奖金
2.统计每部门月工资情况
4.6.4数据库概念设计
分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询或统计员工信息等功能。
员工是本系统的第一个实体。
为了能实现查询和统计部门内员工情况等功能,必须有一个表来存储和管理所有部门的信息。
部门是本系统的第二个实体。
工资是以员工工作情况来制定的。
需要建立一个表来记录各种工资、津贴、扣款的信息。
它主要为各种查询和统计功能提供工资数据。
工资是第3个实体。
据此可以绘出工资管理系统数据库的E-R图如下:
1
N
MM1
实体属性列表如下:
实体
属性
员工
工号
姓名
性别
年龄
籍贯
身份认证
婚姻状况
学历
部门名称
工种
工龄
职务等级
部门
部门负责人
部门人数
工资
工资年月
岗位工资
岗位补贴
出勤天数
加班工时
加班天数
加班类别
加班工资
病假扣款
事假扣款
其他扣款
应发工资
实发工资
4.6.5数据库逻辑设计
将数据库的概念模型转换为关系模型:
实体转换成的关系模式有:
员工(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级)
部门(部门编号,部门名称,部门负责人,部门人数)
获得(工号,姓名)
工资(工号,工资年月,岗位工资,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,实发工资)
因为,员工与工资是1:
N的关系,所以各关系模式为:
部门(部门名称,部门负责人,部门人数)
//字体为粗体的属性为各关系模式的主码。
关系规范式:
工资管理系统∈1NF每个属性均不可再分
4.6.6.数据库物理结构设计
①员工信息数据表定义
其中,“工号”是表的主键,惟一标识。
“部门名称”是外键。
“工号”将记录员工的编号,在员工信息表中增加这一列时,虽然增加了数据冗余,但可以在查询每个员工信息时,提高系统的性能。
因为员工信息表的记录数相对固定,相比之下,增加这个冗余的列对于整个系统来说是有利的。
通过它,系统将引用到工资信息。
此表取名为“员工”
②部门信息数据表定义
其中,部门名称是该表的主键,惟一标识一个部门。
此表取名为“部门”
③工资数据表定义
其中,“工号”作为该表的主键,唯一标识,保证客房信息表数据的参照完整性。
此表表取名为“工资”
根据上面三个数据表的设计,可执行下面的步骤创建数据表
1)打开企业管理器,在本地服务器上创建新的数据库“工资管理库”
2)创建表员工、部门、工资
4.6.7.数据库完整性设计
1)给每个表实施主键约束。
①主键约束、非空值约束
员工:
工号为主键,所以此项非空
部门:
部门名称为主键,所以此项非空
工资:
2)实施CHECK约束
员工表中建立一个检查约束,即员工性别不是‘男’就是‘女’
CHECK(性别IN('
男'
'
女'
)
工资表中建立一个对于出勤天数的检查约束,即出勤天数在0-20天之间
check(出勤天数>
=0and出勤天数<
=20)
3)外键约束
员工表中,工号、部门名称为外键。
FK_员工_工资FOREIGNKEY(工号)REFERENCES工资(工号)
FK_员工_部门FOREIGNKEY(部门名称)REFERENCES部门(名称)
通过此键建立3个表的联系
4)惟一约束
每个表的主键需定义为惟一性:
对于工资表,因为工号是主键,联系着员工表,所以建立唯一性
altertable工资addconstraintUQ_工号unique(工号)
对于员工表,员工的工号、身份证号、部门名称都是用于识别员工身份,所以建立唯一约束
altertable员工addconstraintUQ_工号unique(工号)
5)强制约束
对INSERT和UPDATE操作强制约束,表明以后对员工表中的工号、部门名称的添加和更新操作都会分别检查在工资表、部门表中是否存在与此相应的内容。
6)规则
为了检查员工表中输入的身份证号码是有效位数,可以创建一个规则绑定到该列;
在数据操作时进行检查。
规则的定义语句为:
(LEN((@身份证号)=15)OR(LEN(@身份证号)=18)
4.7部分代码
1登录模块代码
OptionExplicit
DimWithEventsrsAsRecordset
PrivateSubcmdOK_Click()
DimSqlAsString
Sql="
select*fromt_userwhereusercode='
"
&
Trim$(Me.txtUser)&
"
'
andpassword='
Trim$(Me.txtPassword)&
Setrs=ConnWZ.Execute(Sql)
IfNotrs.EOFThen
WithUserInfo
.UserCode=Trim$(rs!
UserCode)
.UserName=Trim$(rs!
UserName)
.Pwd=Trim$(rs!
Password)
.QX=rs!
QX
EndWith
'
CallLogInfo(True)
Me.Hide
RSGL.Show
rs.Close
ExitSub
Else'
MsgBox"
用户名或口令输入错误!
vbExclamation,"
系统提示"
txtUser.Text="
txtUser.SetFocus
txtPassword.Text="
rs.Close
ExitSub
EndIf
Err:
MsgBox"
用户名、口令或数据库连接串输入错误!
数据库连接失败!
系统提醒你:
EndSub
PrivateSubForm_Load()
DimSqlAsString
Me.txtPassword="
WithMe.txtUser
.Text="
.SelStart=0
.SelLength=Len(.Text)
EndWith
Sql="
select*fromt_user"
Setrs=ConnWZ.Execute(Sql)
Ifrs.EOFThen
insertt_user(usercode,username,password,qx)values('
Admin'
管理员'
123456'
0)"
ConnWZ.Execute(Sql)
PrivateSubForm_Unload(CancelAsInteger)
End
PrivateSublblLabels_Click(IndexAsInteger)
PrivateSubtxtpassword_keypress(KeyAsciiAsInteger)
IfKeyAscii=13Then
CallcmdOK_Click
EndIf
PrivateSubtxtUser_KeyPress(KeyAsciiAsInteger)
txtPassword.SetFocus
2员工工资查询代码
DimWithEventsrsAsRecordset
DimWithEventsadoPrimaryRSAsRecordset
DimWithEventsadoXianshiRSAsRecordset
DimJieYue_IDAsString'
为找到ID的查询SQL语句
PrivateSubCheck1_Click()
IfCheck1.Value=1Then
Check2.Value=0
Check3.Value=0
Check4.Value=0
Check5.Value=0
Combo1.Clear
Sql="
select员工号from员工基本信息orderby员工号"
Setrs=db.Execute(Sql)
DoWhileNotrs.EOF
IfIsNull(rs("
员工号"
))=FalseThen
Combo1.AddItemrs("
rs.MoveNext
Loop
Combo1.Visible=True
Label4.Visible=False
Label5.Visible=False
DTPicker1.Visible=False
DTPicker2.Visible=False
Frame2.Visible=False
Frame3.Visible=False
PrivateSubCheck2_Click()
IfCheck2.Value=1Then
Check1.Value=0
Check3.Value=0
Check4.Value=0
Check5.Value=0
WithCombo1
.AddItem"
博士"
硕士"
大学"
大专"
高中"
职高"
中技"
初中"
Label5.Visible=False
DTPicker1.Visible=False
Frame2.Visible=False
Frame3.Visible=False
PrivateSubCheck3_Click()
IfCheck3.Value=1Then
selectdistinct岗位from员工基本信息"
Setrs=db.Execute(Sql)
DoWhileNotrs.EOF
岗位"
Combo1.AddItemrs("
rs.MoveNext
Loop
Combo1.Visible=True
Label4.Visible=False
DTPicker2.Visible=False
PrivateSubCheck4_Click()
IfCheck4.Value=1Then
Check1.Value=0
selectdistinct籍贯from员工基本信息"
Setrs=db.Execute(Sql)
IfIsNull(rs("
籍贯"
rs.MoveNext
PrivateSubCheck5_Click()
IfCheck5.Value=1Then
selectdistinct身份证号from员工基本信息"
Setrs