基于Jsp和SQL Server 2008实现的工资管理信息系统

person 匿名

发布日期: 2020-11-30 15:24:11 浏览量: 928
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1 引言

1.1 课程设计选题

《工资管理信息系统》

1.2 课程设计的目的

通过数据库系统课程设计,熟悉SQL SERVER数据库管理系统的结构与组成;掌握SQL SERVER数据库管理系统的应用技术和的使用;应用Myeclipse开发工具实践《工资管理信息系统》的数据库应用系统的设计方法、开发过程和SQL SERVER数据库的管理与维护。最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。

1.3 本选题的设计背景

为什么选择本题目?往小了说,是因为从课程设计中选择了一个比较顺眼的课题来设计;往大了说,企业的工资管理是公司管理的一个重要内容。随着企业人员数量的增加,企业的工资管理工作也变得越来越复杂。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。资金是企业生存的主要元素,资金的流动影响到企业的整体运作。企业员工的工资是企业资金管理的一个重要组成部分。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间,且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。因此,建立本系统有其现实意义,有其可实践应用的基石。目前社会高度信息化,过去的人工的管理已经不能满足企业公司的人事管理,而工资管理作为企业公司人事管理的一项重要工作,工作量大且繁琐,《工资管理信息系统》是每个公司不可或缺的一个系统软件。

本选题的设计意义?借助现代信息技术和管理理论,建立企业管理信息系统是当今社会的重要趋势。对企业而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。在企业管理中,人力资源是企业最宝贵的资源,也是企业的“生命线”,因此人事管理是企业的计算机管理信息系统重要组成部分。而工资管理又是人力资源管理的重中之重。实行电子化的工资管理,可以让人力资源管理人员从繁重琐碎的案头工作解脱出来,去完成更重要的工作。工资管理信息系统的实现可以减轻比较繁琐的手工工资管理。现在应用在大中型企业的管理信息系统中,几乎都包括了工资管理模块。有些环境中是由作为大型ERP软件中的一个模块引进的,有些是作为企业的财务系统的一部分。因此,做《工资管理信息系统》是一个很好的选择。《工资管理信息系统》可以使我了解到工作时应该注意的一些事项,完成这个软件后,也可以应用到自己的计算机上,帮助自己理财、记账。同时,做这样一个课程设计,一方面是能够检查我在这一个学期中学习到的成果,另一方面也是为了让我进一步的掌握和运用它,同时也让我认清自己的不足之处和薄弱环节,加以弥补和加强。

2 系统分析与设计

2.1 功能及性能分析

2.1.1 功能需求

数据录入功能

主要任务是对各种工资信息进行日常的管理,如工资信息的输入、查询、修改、增加、删除,迅速准确地完成各种工资信息的统计计算和汇总,快速打印出报表。

数据查询功能

  • 员工工种情况,反映员工的工种、等级,岗位工资等信息

  • 员工津贴信息情况,反映员工的加班时间,加班类别、加班天数、岗位补贴等

  • 员工月工资情况:年,月,职工号,姓名,部门名,基本工资,病假扣款,事假扣款,应发工资,实发工资

数据统计功能

  • 统计员工年终奖金

  • 统计每部门月工资情况

2.1.2 性能需求

该系统分为三类用户使用,即:最高权限使用者、一些被授予增删改等操作的财务管理人员、被授予查询功能的普通职员。这样可以在一定程度上使数据库具有相对的安全性。其次,数据库的备份、日志文件的备份等操作也是必不可少的,要把它们分别存储在不同位置。还有,安一款安全性高的杀毒软件。保证系统的物理安全、数据存储和存取的安全与保密、数据传输的安全与保密,做好使用人员的授权管理。至于界面,要做到简单易懂,方便操作,界面中的数据要与数据库中的数据保持一致。以上是从数据库的安全性和操作要求方面的考虑。而对于数据库的一致性,在建表时要考虑到主键、外键、约束条件、用户定义完整性,对于冗余数据,要有检查数据的功能,这样才可以尽最大努力来实现数据的一致性。要做到:时间经济性,优化逻辑设计与物理设计,使系统运行效率高,反映速度快;可靠性,能连续准确的处理业务,有较强的容错能力;可理解性,用户容易理解和使用该系统;可维护性和适应性,系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要;可用性,目标系统功能齐全,能够完全满足业务需求;安全保密性,保证系统的物理安全、数据存储和存取的安全与保密、数据传输的安全与保密,做好使用人员的授权管理。

2.1.3 数据流图表示

解释:进入工资管理信息系统,按部门分出各个员工的基本信息和工资相关信息,因为岗位工资几乎是固定的,每月不会有变动,更改的可能性较小,所以更新量不会很大,因此放在员工信息里,这样得到了岗位工资。而通过工号使员工信息和工资实体连接,也通过工号能够得到奖金、补贴、扣款等信息,两者汇总可得到应发工资,再通过税率触发器的应用,得到实发工资。

2.2 系统的开发运行环境

  • 开发平台:j2ee + sql server 2008

  • 运行环境:windows 7 或以上版本(安装iis5.0以上版本)

2.3 系统总体设计

员工可以查询工资情况,财会员工可以录入工资信息,最高权限用户用于系统的维护。分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询或统计员工信息等功能。员工是本系统的第1个实体;为了能实现查询和统计部门内员工情况等功能,必须有一个表来存储和管理所有部门的信息。部门是本系统的第2个实体;工资是以员工工作情况来制定的。需要建立一个表来记录各种工资、津贴、扣款的信息。它主要为各种查询和统计功能提供工资数据。因此,工资是第3个实体。所以,基本表只有三个。如果想要实现其他功能,可以通过视图的方式来实现。这样,就只需创建一些所需要的视图,并对这些视图进行授权就可以完成所需要的表,再通过编程语言来在《工资管理信息》软件上实现出来。

总体结构图如下:

由于岗位工资基本是固定的,为减少工作人员工作量,把它放入员工信息实体中。在这里,应发、实发工资是由数据库中函数调用完成,岗位工资已被计算在内。

工资实体中,加班时间、加班类别、加班天数、岗位补贴等以及病假扣款、事假扣款等,应该以触发器的形式调用相关函数来自动记录在工资表中。实发工资应该由应发工资*税率而得到,也应该由触发器来实现,当然如果税率、相关函数可以更改就更好了。

3 数据库设计

3.1 数据库概念结构

以下是员工实体Staff、部门实体Depart、工资实体Wage的数据描述,以表格形式表示相关字段、字段名、类型宽度、说明、备注。当然,这些只是初步的定义,在实际编程过程中,可以修改字段名和类型宽度,以使程序能够编写出来。有些类型定义的不够恰当的情况,也在实际建表中更改了过来,这些数据描述只做参考,并不一定准确。

员工实体Staff

工资实体Wage

部门实体Depart

E-R图

3.2 数据库逻辑结构

3.2.1 关系模型

  • 部门(部门名称,部门负责人,部门人数)

  • 员工(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级,岗位工资,部门负责人,部门人数)

  • 工资(工号,工资年月,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,实发工资)

  • 得到(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级,岗位工资,工资年月,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,实发工资)

3.2.2 关系模型的优化

  • 部门(部门名称,部门负责人,部门人数)

  • 员工(工号,姓名,性别,年龄,籍贯,身份证号,婚姻状况,学历,部门名称,工种,工龄,职务等级,岗位工资)

  • 工资(工号,工资年月,岗位补贴,出勤天数,加班工时,加班工资,加班天数,加班类别,病假扣除,事假扣除,其它扣除,应发工资,实发工资)

关系规范式 :工资管理信息系统∈1NF ,每个属性均不可再分。

3.2.3 视图的设计

创建员工-工资视图

创建部门(人事部)-员工视图

其实,公司部门不可能只有一个人事部,这里省略了其他部门,只以人事部为例。而员工-工资视图里,员工姓名是调用了员工staff表中的数据。

代码在gongzigl.sql文件中。

3.3 数据库的实现

3.3.1表

部门表数据信息定义:

编辑:

其中,部门名称是该表的主键,惟一标识一个部门。此表取名为“Depart”

员工表数据信息定义:

编辑:

其中,“工号”是表的主键,惟一标识。“部门名称”是外键。“工号”将记录员工的编号,在员工信息表中增加这一列时,虽然增加了数据冗余,但可以在查询每个员工信息时,提高系统的性能。因为员工信息表的记录数相对固定,相比之下,增加这个冗余的列对于整个系统来说是有利的。通过它,系统将引用到工资信息。此表取名为“Staff” 。

工资表数据信息定义:

编辑:

其中,“工号”作为该表的主键,唯一标识,保证客房信息表数据的参照完整性。此表表取名为“Wage”。

这些表中的具体属性类型,要根据客户的实际需求来定义。

3.3.2 安全性设计

通过创建用户并授权的方式实现数据库安全性控制。创建了三个用户,分别授予所有权限、修改更新、查询权限,以确保数据库安全。如图:

u1:

u2:

u3:

可以通过grant ** on ** to ** with grant option;语句来完成授权,也可以通过鼠标选中来授权。

3.3.3 一致性设计

Job_number varchar(50) not null primary key foreign key references staff(Job_number),此语句中包含实体完整性(列级)primary key ,参照完整性(列级)foreign key references staff(Job_number),以及用户定义完整性not null 列值非空。这样可以对数据有着一定的约束,以确保数据的一致性。

Gender CHAR(2)CHECK(Gender IN('男','女')),用户定义完整性,检查布尔表达式。

ID_number VARCHAR(50) UNIQUE NOT NULL,用户定义完整性,列值唯一非空。

为了确保数据库中数据不存在不正确的信息,所以一些表中的数据必须通过级联的方式使得不正确数据不能填入表中,这里用了一个外键,来满足员工表中工号与工资表中的工号所对应的信息是同一个人的。

3.3.4 索引设计

  1. CREATE INDEX Job_number_name_ind--创建索引
  2. ON staff(Job_number,Name)--工号、姓名

默认索引没有写进来,这里,在《工资管理信息系统》中,建立了一个在员工表中以工号和姓名为索引升序排列。建立了这么一个索引,可以加快查询的速度,系统在存取数据时会自动选择合适的索引作为存取路径。

3.3.5 事务、存储过程、触发器的设计、游标

定义存储过程,以:岗位补贴(@staffgongzi)、出勤天数(@staffchuqin)、加班工资(@staffjiaban)、应发工资(@staffying)、实发工资(@staffshi)为输入参数返回指定员工工资信息。

如图:

创建触发器staff_update:员工内部调动,当系统对员工表进行UPDATE操作后,将会自动触发它。该触发器将相应记录的部门人数、部门名称、工资更新。

创建触发器staff_delete:员工调出:进行员工调出操作是在员工信息表中删除该员工的记录,可以为员工信息表设计一个Delete触发器,当员工信息表执行Delete操作后,工资表、部门表中的记录也将全部删除。定义这个触发器名称为staff_delete。

创建触发器staff_insert:员工调入:进行员工新调入操作是在员工信息表中添加一条新的记录,可以为员工信息表设计一个Insert触发器,当员工信息表执行Insert操作后自动更改出部门信息表相应记录的数据。定义这个触发器名称为staff_insert。

创建触发器t1:财会为新员工插入相关工资信息

四个触发器,如图:

4 详细设计与实现

4.1 登录模块

界面

功能

用于拥有相关权限的人,登陆进入工资管理信息系统。如果登陆失败则如图:

登陆成功则进入选择界面,如图:

通过登录模块,使数据库知道登录进来的是什么人,这里举例的是最高权限所有者的登录,因此被授予的权限较多,可以更改所有的表。而,ss用户登录,则可以更新数据,不能随意删除表中信息。s用户登录,只可以查询员工信息以及工资信息,不具备修改功能。

4.2 职工管理模块

界面

功能

可以查询职工相关信息以及添加职工信息。如果未找到相关职工,则显示:

添加职工信息,则显示:

这个模块本来是想做的复杂一些,但是程序实现困难,所以就把本来是两个模块的东西写在了一起。可以通过工号或姓名来查询职工的基本信息,不填任何数据的情况下,会显示所有的员工信息。而在添加员工的表中,可以直接添加员工的基本信息。重置按钮是将刚刚已填写的数据,在未点击确定按钮的情况下,把已填写的数据清空。

举例说明,如图所示,我添加了一个工号为23456的信息,则显示结果如下:

一、添加工号为23456的相关信息。

二、添加成功。

三、职工信息查询,输入工号23456。

四、查询结果。

4.3 工资管理模块

界面

功能:可以按职工编号查询职工工资的相关信息以及按职工编号添加职工工资信息。如果未找到相关职工编号,则显示:

添加职工编号及工资的相关信息,则显示:

可以通过工号来查询职工的基本信息,不填任何数据的情况下,会显示未找到结果!而在添加职工工资的表中,可以直接添加员工的基本信息。原计划是用触发器实现相关函数来达到自动录入信息的,可是后来程序编程无法实现,就只能手动输入了。重置按钮是将刚刚已填写的数据,在未点击确定按钮的情况下,把已填写的数据清空。

举例,已添加完职工编号23456的工资信息。

则查询职工编号为23456的工资信息,在职工编号输入23456:

它的查询结果如下图所示:

结论

通过此次数据库课程设计,使我对数据库的学习与应用得到了进一步的提高。通过完成《工资管理信息系统》,我可以熟练的使用SQL server 2008软件。

本次课程设计主要是对自建的一个工资管理系统数据库,利用在数据库中的表、存储过程、视图、约束等组合,设计出比较实用的应用软件代码;对表中的信息能够进行简单的查询,子查询,视图的创建、修改与删除,与约束的创建,存储过程与触发器的创建与删除等基本操作,加深对SQL Server数据库的进一步研究。虽然在此期间遇到过麻烦,但通过查阅资料与尝试解决问题,使我更加了解SQL的基础知识,从中学到了新知识。编程是我的弱项,编程对我来说还是很困难的。

虽然,《工资管理信息系统》,它的基本功能都能实现。完成了《工资管理信息系统》这款小软件(算是软件吧),但在这其中仍有些许的不足。本来是想用触发器实现自动录入的,结果触发器编的有点问题与程序连接不可以,编程不行,结果改为纯手动输入,完成了基本功能。

上传的附件 cloud_download 工资管理信息系统.zip ( 1.05mb, 33次下载 )
error_outline 下载需要10点积分
eject