课程设计工资管理系统.docx
《课程设计工资管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计工资管理系统.docx(40页珍藏版)》请在冰豆网上搜索。
课程设计工资管理系统
《软件工程》课程设计报告
工资管理系统
第一章开发计划
随着科技的发展现在越来越多的办公都实行了自动化,随着就职人员的增加,这对工资管理提出了新的要求,传统的纯手工或简单的计算工具,已经不适应现代经济高速发展和信息快速增长的要求,因此必须运用现代化管理手段,配备完善的自动化设备,采用全新的计算机网络和工资管理系统,来提高企业的办公效率,最大限度地发挥准确、快捷、高效等作用,从而赢得企业的高信誉、强实力、好效益,运用计算机管理就势在必行!
!
1.1任务陈述
工资总额是指各单位在一定时期内支付给本单位全体职工的全部劳动报酬总额。
按照国家统计局的规定,工资总额有计时工资、计件工资、奖金、津贴和补贴、加班加点工资和特殊情况下支付的工资6部分组成,其中计时工资和计件工资是工资总额中最基本的部分。
上述工资构成要件所组成的工资总额只是应发工资,并非每个职工拿到手的实发工资,原因在于存在一些应扣项目,例如水电费、工会会费、保险费、公积金、病事假扣款、旷工扣款和个人所得税等。
在计算每个职工实发工资之前应在工资总额中扣除这部分款项,即有如下关系:
应发工资=基本工资+工龄工资+岗位津贴+固定补贴+加班加点工资+奖金
扣款合计=水电费+保险费+个人所得税+病假扣款+事假扣款+旷工扣款+其他扣款
实发工资=应发工资–扣款合计
本系统采用RationalRoseEnterpriseEdition2003.06.00作为绘图工具,更加真实的反映了各个部分的层次关系。
1.2系统分析
1.2.1问题定义
工资管理系统有着许多手工管理所无法比拟的优点:
检索迅速、查找方便、可靠性高、存储量高、保密性好、寿命长、成本低等.这些优点能够极大的提高工资管理的效率。
1.2.2可行性分析
1目标方案可行性
(1).计算机设备处理繁杂的工资增减问题,大幅度减少人力、物力,极大地提高企业的管理水平和管理效率。
(2).管理水平和管理效率的提高能直接产生经济效益。
(3).高效率的管理形成了良好的经营氛围,为企业打造优良形象,提高企业竞
争力。
(4).本系统安全保密性可靠,实施独立的局域网络,人员进入系统需要登录,需输入账户和密码。
(5).本系统的管理,可以根据市场需要进行调整,实用性强
2技术可行性
(1)工作人员一般都要求掌握计算机技术,会使用各种管理软件。
(2)在新系统投入使用时,需对员工进行少量的培训,熟悉系统的功能和使用方法使系统能够顺利运行。
(3)经济可行性
(1)企业有能力承担系统开发费用。
(2)新系统将为企业带来经济效益。
管理系统是一个信息化、智能化和先进
理理念的集合体。
而管理是一个动态过程,在其运行过程中要采取多项措施。
其最主要的表现就是减少了企业管理费用和人力开支。
4操作可行性
(1)本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那有一般的计算机知识的人员就可以轻松上手。
(2)整个工资管理系统采用较友好的交互界面,简单明了,操作方便,不需要对数据库进行深入的了解。
第二章需求分析
2.1市场需求分析
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"用户名、口令或数据库连接串输入错误!
数据库连接失败!
",vbExclamation,"系统提醒你:
"
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
Sql="insertt_user(usercode,username,password,qx)values('Admin','管理员','123456',0)"
ConnWZ.Execute(Sql)
EndIf
rs.Close
EndSub
PrivateSubForm_Unload(CancelAsInteger)
End
EndSub
PrivateSublblLabels_Click(IndexAsInteger)
EndSub
PrivateSubtxtpassword_keypress(KeyAsciiAsInteger)
IfKeyAscii=13Then
CallcmdOK_Click
EndIf
EndSub
PrivateSubtxtUser_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
txtPassword.SetFocus
EndIf
EndSub
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("员工号")
EndIf
rs.MoveNext
Loop
Combo1.Visible=True
Label4.Visible=False
Label5.Visible=False
DTPicker1.Visible=False
DTPicker2.Visible=False
Frame2.Visible=False
Frame3.Visible=False
EndIf
EndSub
PrivateSubCheck2_Click()
IfCheck2.Value=1Then
Check1.Value=0
Check3.Value=0
Check4.Value=0
Check5.Value=0
Combo1.Visible=True
Combo1.Clear
WithCombo1
.AddItem"博士"
.AddItem"硕士"
.AddItem"大学"
.AddItem"大专"
.AddItem"高中"
.AddItem"职高"
.AddItem"中技"
.AddItem"初中"
EndWith
Label4.Visible=False
Label5.Visible=False
DTPicker1.Visible=False
DTPicker2.Visible=False
Frame2.Visible=False
Frame3.Visible=False
EndIf
EndSub
PrivateSubCheck3_Click()
IfCheck3.Value=1Then
Check1.Value=0
Check2.Value=0
Check4.Value=0
Check5.Value=0
Combo1.Clear
Sql="selectdistinct岗位from员工基本信息"
Setrs=db.Execute(Sql)
DoWhileNotrs.EOF
IfIsNull(rs("岗位"))=FalseThen
Combo1.AddItemrs("岗位")
EndIf
rs.MoveNext
Loop
Combo1.Visible=True
Label4.Visible=False
Label5.Visible=False
DTPicker1.Visible=False
DTPicker2.Visible=False
Frame2.Visible=False
Frame3.Visible=False
EndIf
EndSub
PrivateSubCheck4_Click()
IfCheck4.Value=1Then
Check1.Value=0
Check2.Value=0
Check3.Value=0
Check5.Value=0
Combo1.Clear
Sql="selectdistinct籍贯from员工基本信息"
Setrs=db.Execute(Sql)
DoWhileNotrs.EOF
IfIsNull(rs("籍贯"))=FalseThen
Combo1.AddItemrs("籍贯")
EndIf
rs.MoveNext
Loop
Combo1.Visible=True
Label4.Visible=False
Label5.Visible=False
DTPicker1.Visible=False
DTPicker2.Visible=False
Frame2.Visible=False
Frame3.Visible=False
EndIf
EndSub
PrivateSubCheck5_Click()
IfCheck5.Value=1Then
Check1.Value=0
Check2.Value=0
Check3.Value=0
Check4.Value=0
Combo1.Clear
Sql="selectdistinct身份证号from员工基本信息"
Setrs