1 范围与前景
1.1. 课程设计选题以及目的
选题:《工资管理系统》
目的:通过数据库系统课程设计,熟悉了SQL SERVER数据库管理系统的结构与组成;掌握了SQL SERVER数据库管理系统的应用技术和的使用;应用JSP+SQL Server开发工具实践了《工资管理系统》的数据库应用系统的设计方法、开发过程和SQL SERVER数据库的管理与维护。最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。
1.2. 应用背景
众所周知当今时代的世界经济正从工业经济向知识经济转变,而知识经济的两个重要特征就是信息化和全球化。要实现信息化和全球化就必须依靠完善的网络和数据库机制。处于现在这样一个飞速发展的信息时代,在各行各业中都离不开信息处理,这正是计算机被广泛应用于管理信息系统的环境,使用计算机进行信息控制提高了工作效率。
在计算机诞生前,对工资的管理一直都是纸质化记录、人工统计和计算。这样的管理不但费时费力,也很容易计算上的错误与疏漏。这种管理方式效率低、保密性差、不利于添加、删除、查询、更改员工的工资信息,久而久之还会产生大量的文件,给维护带来了不少困难。当今社会,资金是企业生存的主要元素,资金的流通影响到整个企业的运作,企业员工工资是企业资金管理的一个重要组成部分,因为每个月企业都要涉及到发放员工工资的问题。而传统的纸质材料的数据信息管理方式对于工资的管理与发放又存在很大麻烦,所以如果能够实现工资管理自动化,无疑给企业管理部门带来很大方便。随着计算机的诞生,实现工资管理的系统化、规范化、自动化,将成为现代企业管理工资的首选。
1.3. 业务机遇
企业的工资管理部门通过工资管理系统对员工工资信息进行录入、更新、删除、更改、添加、统计、排序、查询、打印,可以提高工作效率,减少工资信息的疏漏。减少人力的投入,节约开支,快速准确的管理员工的工资信息,准确按时的发放工资。通过详细的奖惩机制,系统准确计算每个员工工资的奖惩情况,起到监督作用,同时提高员工的工作热情。员工可以通过在工资管理系统中查询或者打印自己的工资详细记录,对自己的工资情况一目了然,减少有关工资发放方面的纷争,提高员工对企业的信赖度。
工资管理系统,是企业正规化管理的必然需求,不仅能提高企业管理质量,还能方便员工查询自己的工资信息,于老板于员工,都有好处。
1.4. 业务风险
(1)存贮数据的数据库被破坏导致数据的缺失或丢失;
可能性0.3,影响9
(2)企业电脑被入侵导致员工工资信息的泄露;
可能性0.1,影响9
(3)自身系统技术设计存在漏洞,导致工资操作出现bug;
可能性0.2,影响8
(4)企业不满意系统的开发情况
可能性0.3,影响7
1.5. 前景概述
工资管理系统是一个基于互联网的应用程序,有两个登录模式:普通用户(员工)、管理员用户。在普通用户模式中,员工可以用自己的工号以及登录密码访问系统,然后查询自己的个人资料、工资信息,没有操作其他普通用户的权限;在管理员模式中,管理员用工号以及登录密码访问系统,管理员权限相对较多,可以增加员工个人档案,删除、修改已存在的员工信息,还可以统计员工的工资信息,当管理员离职时,系统应该回收其登录权限。
产品名称:工资管理系统
产品面向对象:企业工资管理员、企业员工
产品优势:区别于传统的纸质版信息管理,运用此系统管理工资,高效准确,操作便捷。
1.6. 主要特征
FE-1:普通用户(员工)登录模式下,员工只能操作查询自己的信息,包括个人档案以及工资信息;
FE-2:普通用户(员工)登录模式下,员工可以在查询工资信息功能模块下,打印自己的工资查询结果;
FE-3:普通用户(员工)登录模式下,员工可以修改自己的登录密码;
FE-4:普通用户(员工)需要提交个人档案进行实名注册;
FE-5:管理员登录模式下,管理员可以添加审核通过的员工个人档案,添加普通用户;
FE-6:管理员登录模式下,可以添加、修改、删除用户;
FE-7:管理员登录模式下,可以添加、修改、删除员工个人档案;
FE-8:管理员登录模式下,可以添加、修改员工基本工资;
FE-9:管理员登录模式下,可以管理、查询发放工资;
FE-10:普通用户(员工)/ 管理员登录系统之前,应该选择相应的登录模式,才可准确登录。普通用户(员工)/ 管理员在操作结束后,可以退出系统。
1.7. 假设与依赖
AS-1:普通用户(员工)在领取工资后打印证条,工资管理系统存底,过后如有工资纠纷,可查询有关记录作为凭据;
AS-2:企业工资按时发放;
AS-3:管理员需要每半年对员工个人档案进行更新存档,以确保信息有效。
1.8. 限制与排除
LI-1:管理员能查询员工个人隐私信息,应当让管理员签订保密协议,确保员工个人隐私不被泄露;
LI-2:员工初始使用本系统可能不适应,不过系统在设计以及实现过程中,尽量简化使得操作方便;
LI-3:员工或者管理员离职后,个人信息应该存档半年,以备不时之需。
1.9. 项目运行环境
本系统采用JSP+SQL Server开发,使用的IDE是Myeclipse,使用的服务器是Tomcat。
①操作系统:Windows
②数据库:SQL server
③运行服务器:Tomcat
④系统操作平台:Myeclipse集成操作环境 / IE、360、等常用浏览器
⑤PC电脑一台。
2 需求分析
2.1. 功能需求
本系统设计内容是一个基于web的工资管理系统,通过分析调查,再结合案例,我认为系统开发出来的功能应该包括:
(1)系统用户分为两种:普通用户(员工)和管理员。管理员顾名思义,能管理操作普通用户;普通用户能修改登录密码、查询个人档案和工资信息、打印工资内容。
(2)能实现管理员对员工个人档案的录入、修改、删除。
(3)管理员能设定员工的基本工资。
(4)按照不同工种的基本工资情况、员工的考勤情况、员工的奖惩情况产生月工资单表。
(5)系统应提供强大的查询、计算功能。
(6)可以导出工资报表。
通过对系统功能需求的初步分析,得出系统的功能模块图如下:
系统功能模块图
2.2. 系统数据流图
图1 0层数据流图
图2 工种基本工资设定数据流图
图3 工资核算数据流图
图4 员工信息查询数据流图
图5 管理员更新工资管理系统数据流图
2.3. 概念模型分析
2.3.1. 实体属性图
①用户实体包括用户名、用户密码、用户权限等:
②员工实体包括员工编号、姓名、性别、生日、部门、职务等:
③员工基本工资实体包括员工编号、基本工资、岗位工资、工龄工资、生活补贴、住房补贴、交通补贴等:
④员工工资信息包括员工编号、工资月份、加班工资、缺勤扣款、本月奖金等:
2.3.2. 实体属性联系图(E-R图)
3 数据库设计
3.1. 数据库逻辑结构
本次课程设计中数据库设计采用的逻辑模型是关系模型,关系模型包括关系数据库结构、关系数据操作集、关系的完整性约束。
逻辑结构设计的任务就是把概念模型设计阶段设计好的基本E-R图转换为与选用的具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,现选用关系模型,E-R图向关系模式的转换结果如下所示:
用户表(用户名、用户密码、用户权限),主码是用户ID;
员工个人档案表(员工ID、员工名称、性别、所属部门、出生日期、籍贯、婚姻情况、身份证号、政治身份、所属名族、教育水平、专业、毕业日期、毕业大学、公积金账号、行政级别、职位、职称、外语、外语水平、计算机水平、联系电话、手机号码、住址、在职情况、用工形式、个人简历),主码是员工ID;
员工基本工资表(员工ID、基本工资、岗位工资、工龄工资、生活补贴、住房补贴、交通补贴、公积金、经手人),主码是员工ID,员工ID也是外码,参照员工个人档案表的员工ID;
员工工资信息表(员工ID、工资月份、加班工资、本月奖金、病假扣除、事假扣除、缺勤扣除、其他扣除、个人所得税),主码是组合主码(员工ID、工资月份),员工ID是外码,参照员工个人档案表的员工ID。
3.2. 物理模型设计
3.3. 数据库完整性设计
主要是对数据库表的三种完整性进行设计:
实体完整性:通过设置主键都已实现;
参照完整性:员工基本工资表和员工工资信息表中的员工编号均是外码,参照的是员工个人档案信息中的员工编号,这么设计的原因是:在系统中存在工资信息的记录,就应该有相应的档案存在才对,也就是说,发工资的对象一定是公司存在的员工对象。
用户自定义完整性:在该系统中,设置了员工个人档案表中性别一栏的值必须是‘男’或者‘女’。
3.4. 数据库安全性设计
3.4.1. 用户权限设置
该系统的用户只有两种,一种是管理员,另一种是普通员工用户,管理员具有对数据库操作的所有权限,普通员工用户只有对自己的工资信息以及个人档案查询的权限,对数据库中其他对象的操作权限将受限。
3.4.2. 数据库备份
数据库系统可能发生各种各样的故障,大致可分为以下几类:事务内部故障、系统故障、介质故障、计算机故障,总结各类故障,对数据库的影响有两种可能性:一是数据库本身被破坏,二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。然而,数据库遭到破坏后,我们就得想办法看能不能恢复数据库,恢复机制涉及两个关键问题是:第一,如何建立冗余数据;第二,如何利用这些冗余数据实施数据库恢复。
存储在计算机当中的数据库可能会因为某一些不确定的因素而导致破坏,这样子的话,系统信息就会遗失,对于正规大型的信息管理系统来说,这无疑是巨大的隐患。考虑到系统信息能安全保存,DBMS(SQL Server)中建立的存在于本地的数据库信息,包括mdf(数据转储)文件和ldf(登录日志)文件,我将其定期拷贝到其他备份计算机上和U盘上,以确保在本机数据库存在错误的情况下,能由建立的冗余数据恢复数据库,维护系统信息的安全与完整。
3.5. 触发器设计
(1)为实现添加员工信息后自动添加用户,删除员工信息后自动删除用户,我定义了如下触发器:
create trigger AddUser on [dbo].[employee] for insert
as begin
declare @EmployeeID char (20)
select @EmployeeID = inserted.EmployeeID
from inserted
insert into users values(@EmployeeID,@EmployeeID,’普通用户’)
End
create trigger delete1 on [dbo].[employee]
for delete
as
begin
delete dbo.users
from users,deleted
where users.ID=deleted.EmployeeID
end
测试:
users表一开始我只是在其中插入了一条元组,新建了一个管理员用户binbin:
接着,我在employee表中插入一条元组,新建了一个员工档案,员工编号为000001:
再回来刷新users表的时候,就自动加上了一个新的普通登录用户,id为000001:
可见,触发器设置成功了。同理,删除触发器也是这个效果。
(2)实现个人所得税的自动计算,而不在程序中修改,我使用了一个计算个人所得税的触发器,代码如下:
Create trigger tax on [dbo].[pay]
for insert
As
// 工资低于1600的不收税,高于1600的按层次收税,工资越高,税收越高。
update pay
set tax=0
where EmployeeID=pay.EmployeeID and PaySum-SickLeave-PersonalLeave-Absence-Others between 0 and 1600
update pay
set tax=(PaySum-SickLeave-PersonalLeave-Absence-Others-1600)*0.05
where EmployeeID=pay.EmployeeID and (PaySum-SickLeave-PersonalLeave-Absence-Others-1600) between 0 and 500
update pay
set tax=(PaySum-SickLeave-PersonalLeave-Absence-Others-1600)*0.1-25
where EmployeeID=pay.EmployeeID and (PaySum-SickLeave-PersonalLeave-Absence-Others-1600) between 500 and 2000
update pay
set tax=(PaySum-SickLeave-PersonalLeave-Absence-Others-1600)*0.15-125
where EmployeeID=pay.EmployeeID and (PaySum-SickLeave-PersonalLeave-Absence-Others-1600) between 2000 and 5000
update pay
set tax=(PaySum-SickLeave-PersonalLeave-Absence-Others-1600)*0.20-375
where EmployeeID=pay.EmployeeID and (PaySum-SickLeave-PersonalLeave-Absence-Others-1600) between 5000 and 20000
update pay
set tax=(PaySum-SickLeave-PersonalLeave-Absence-Others-1600)*0.25-1375
where EmployeeID=pay.EmployeeID and (PaySum-SickLeave-PersonalLeave-Absence-Others-1600) between 20000 and 40000
4 详细设计与实现
4.1. 数据库连接
数据库连接使用的方式是连接池,连接池主要设计思路是:
1.连接池配置属性DBbean:里面存放可以配置的一些属性
2.连接池接口IConnectionPool:里面定义一些基本的获取连接的一些方法
3.接口实现ConnectionPool:对上面操作进行实现,并加入一些其他方法
4.连接池管理ConnectionPoolManager:管理所有的不同的连接池,所有的连接都能通过这里进行从而获得连接。
使用连接池的好处:
1. 资源重用
2. 更快的系统响应速度
3. 统一的连接管理,避免数据库连接泄漏。
4.2. 系统登录功能
本页面是用户登录系统的页面,当用户提交登录信息,对用户进行身份及权限判断,再转入不同的页面。当用户名或密码、权限输入错误,会提示用户重新输入。为提高系统的安全性,没有登录是不能打开其它页面的,同样,权限为普通用户的用户也不能打开管理员的页面,而管理员则具有所有权限。
4.3. 系统管理功能
该功能可以实现修改密码、帮助功能。在修改密码时,有相应限制,如旧密码应与数据库的密码相同,新密码应输入两次,以确保不会输错。
4.4. 用户管理功能
该功能可以添加系统用户,当用户已存在时会提示不能添加:
该功能可以修改系统用户信息,如修改用户名、用户密码、用户权限,删除用户。
4.5. 员工信息管理功能
该功能可以添加员工信息功能,文本框后面加了*号的则为必填项目,如不填则不能添加该员工信息,因前面在设计数据库时添加了触发器,所以在此添加员工信息,则会自动添加以该员工号为用户名和密码的系统用户。
如需管理员工信息,可以点击修改,点击后会弹出该员工的信息,可以在相应文本框内修改。
员工查询,在这里,可实现丰富的查询功能,查询条件可叠加,选择查询条件后点击查询,会弹出查询结果,在该页面点击员工号可查看该员工的详细信息。
4.6. 基本工资管理
基 本工资管理功能可添加未有基本工资信息员工的基本工资,通过点击操作,将待添加基本工资的员工移动到右边,同时在下面的文本框内输入工资信息。
该功能同时也可修改基本工资信息,只需点击修改,则会弹出该行员工的基本工资信息,可以相应的文本框内进行修改。
4.7. 工资发放
该功能与基本工资类似,在该页面可以选择已添加基本工资的员工,没有基本工资信息的员工是不能发放工资,同样通过点击操作,可把想要发放工资的员工移动到右边,然后在下面的文本框内输入工资信息,若该员工该月的工资信息已存在,则会提示不能添加。
管理功能则与基本工资管理类似,这里不再介绍:
4.8. 工资查询功能
工资查询功能可实现丰富的查询功能,跟员工信息查询功能一样,查询条件也可叠加,选择查询条件后点击查询弹出查询结果。
在该页面可对查询结果进行打印。
点击查询结果的员工编号,会弹出该员工的详细工资信息,同样可以要求进行打印操作:
4.9. 普通用户登录
普通用户登录后能执行的功能比较少,只能修改密码、查看个人信息、查看工资信息。
操作与管理员的操作类似,这里不再详细介绍了。
后言
关于本工资管理系统就介绍这么多了,有什么不对的地方还望多多指教,也欢迎大家关注我(简书/GitHub)
谢谢观看此文。
源代码地址:https://pan.baidu.com/s/1pL4QMl9
提取密码:bve2