员工工资管理系统数据库课程设计文档格式.docx
- 文档编号:6509601
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:23
- 大小:504.01KB
员工工资管理系统数据库课程设计文档格式.docx
《员工工资管理系统数据库课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《员工工资管理系统数据库课程设计文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
完成期限:
2016.11.3-2017.1.5
指导教师签名:
课程负责人签名:
摘要
企业的工资管理是公司管理的一个重要内容。
工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。
工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。
资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分。
但考虑到学生的开发时间,本次设计主要阐述员工工资管理系统主要是以企业员工工资情况为对象而开发的。
涉及系统比较小,有利于学生单独编写。
其系统的设计主要包括数据库的设计、维护和应用界面的设计与后台数据库的连接。
经分析采用Microsoft公司开发的VisualBasic6.0为开发工具,MicrosoftSQLsever2000为后台数据库。
VisualBasic(简称VB)是由Microsoft公司推出的在Windows操作平台下最迅速、最简捷的应用开发工具之一。
它引入了面向对象的程序设计思想和“控件”的概念,使得大量已经编好的VisualBasic程序可以直接拿来使用。
同时VB具有简单、易学的特点,是大多数初学者最理想的编程语言,也是专业人员得心应手的开发工具。
它在一个公共环境里集成了许多不同的功能,例如,设计、编辑、编译和调试。
目前市场上数据库的主流厂商及产品有IBMDB2、MicrosoftSQLSERVER2000、ORACLE9i、Sybase。
MicrosoftSQLServer2000是在SQLServer7.0的基础上对性能、可靠性、质量以及易用性进行了扩展。
SQLServer2000中包含许多新特性,这些特性使其成为针对电子商务、数据仓库和在线商务解决方案的卓越的数据库平台。
其增强的特性包括对丰富的扩展标记语言(XML)的支持、综合分析服务以及便捷的数据库管理。
MicrosoftSQLServer2000简化了管理、优化工作,并且增强了迅速、成功的部署在线商务应用程序所需的可靠性和伸缩性。
关键词:
工资管理系统;
设计;
开发工具
1前言
1.1课程选题:
员工工资管理系统
1.2数据库背景
随着计算机技术的飞速发展和经济体制改革的不断深入,传统企业管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成员工工资管理工作。
提高公司企业管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。
基于数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等,功能,功能比较的齐全,并对工资进行了统计如津贴管理、报表统计等,基本上能满足管理员和公司的要求。
1.3数据库目的
(1)对单位人员的变动进行处理。
(2)对职工的工资进行计算、修改。
(3)查询统计功能。
(4)对用户管理功能。
一个系统的应用有管理员和普通用户,他们对系统的权限受到限制。
2需求分析
2.1任务描述
企业工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。
2.2需求分析
需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。
理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。
抽象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。
需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需求。
所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能什么事情,完成什么样的功能,达到什么性能。
此次课程设计的使用者是企业的员工,主要是针对系统的管理员。
其进行的操作就是对公司员工、部门等一些方面改动的改善。
用户的需求就是对员工工资和使用用户的添加、删除、修改和查询。
这就要求各种信息中存在实体完整性、参照完整性和用户自定义完整性。
3概念结构设计
3.1数据流需求分析
登陆信息返回信息
错误信息寻找信息
图3.1数据库需求分析数据流图
3.2概念模型设计
根据系统数据流图和数据字典,得出系统的概念模型(E-R)如图3.2所示。
图3.2登录界面实体图
图3.3员工信息实体图
图3.4员工工资实体图
n1n
图3.5总体E-R图
4逻辑结构设计
在设计过程中,从用户的角度考虑来处理各个表之间的约束关系,把概念模式转化成逻辑模式最终形成E-R图。
员工信息表(员工编号、姓名、性别、出生年月、所属部门、文化程度、职称)
部门信息表(部门编号、部门名称、部门负责人、部门人数)
基本工资表(工资级别、工资金额)
岗位工资表(工资级别、工资金额)
工资信息表(员工编号、部门编号、基本工资、岗位工资、水电费、实发工资)
表4.1员工信息表
键
名称
数据类型
大小
空
默认值
主键
员工编号
char
8
不可以
姓名
性别
2
可以
“男”
出生年月
datetime
外键
所属部门
4
文化程度
职称
12
表4.2部门信息
部门编号
部门名称
20
部门负责人
部门人数
int
表4.3基本工资
工资级别
工资金额
numeric
5(8,2)
表4.4岗位工资
表4.5工资信息
主键、外键
基本工资
岗位工资
水电费
实发工资
5数据库物理设计与实施
5.1数据库应用的硬件、软件环境介绍
5.1.1软件环境
本次实验用到的软件是SQL sever2008。
5.1.2硬件环境
(1)cpu
处理器类型:
pentiumIII兼容处理器或速度更快的处理器。
处理器速度:
最低1.0GHz,建议2.0GHz。
(2)内存
最小512MB,建议2GB或更大。
(3)硬盘
根据组件的不同,需要的硬盘空间进行变化。
建议2.2GB以上硬盘空间。
(4)显示器
分辨率1024X768像素以上。
(5)操作系统
可以安装到64位服务器的WindowsonWindows32位子系统中。
5.2建表
5.2.1创建数据库
IFEXISTS(SELECT*FROMsysdatabasesWHEREname='
工资管理库'
)
dropdatabase工资管理库
GO
CREATEDATABASE工资管理库
ONPRIMARY(
NAME=工资管理库,
FILENAME='
D:
\工资管理库_data.mdf'
SIZE=4MB,
MAXSIZE=6MB,
FILEGROWTH=2MB
LOGON(NAME='
工资管理库_log'
FILENAME='
\工资管理库.ldf'
SIZE=1MB,MAXSIZE=25MB,FILEGROWTH=10%)
5.2.2创建基础表
(1)员工信息表
createtable员工(
工号VARCHAR(50)NOTNULLprimarykey,
姓名VARCHAR(50)NOTNULL,
性别CHAR
(2)DEFAULT'
男'
CHECK(性别IN('
'
女'
)),
年龄CHAR(10)NOTNULL,
籍贯VARCHAR(50)NOTNULL,
身份证号VARCHAR(50)UNIQUENOTNULL,
婚姻情况VARCHAR(50),
学历VARCHAR(50),
部门名称VARCHAR(50)NOTNULL,
工种VARCHAR(50),
工龄VARCHAR(50)NOTNULL,
职务等级VARCHAR(50)
)GO
(2)部门表
createtable部门(
部门名称VARCHAR(50)primarykeyNOTNULL,
部门负责人VARCHAR(50)NOTNULL,
部门人数VARCHAR(50)
(3)工资表
CREATETABLE工资(
工号varchar(50)notnullprimarykey,
工资年月varchar(50)notnull,
岗位工资decimalnotnull,
岗位补贴decimal,
出勤天数decimalnotnull,
加班工时decimal,
加班工资decimal,
加班天数decimal,
加班类别varchar(50),
病假扣款decimal,
事假扣款decimal,
其他扣款decimal,
应发工资decimalnotnull,
实发工资decimalnotnull
5.3视图
(1)查询员工工资情况
建立一个视图,反映员工姓名及工资情况。
CREATEVIEW员工_工资
AS
SELECT员工.姓名,工资.*
FROM员工,工资
WHERE员工.工号=工资.工号
5.4存储过程
(1)指定员工工资情况的查询
定义一个名为stsffCost的存储过程,该存储过程以以工资年月(@staffgongzi)、出勤天数(@staffchuqin)、加班工资(@staffjiaban)、应发工资(@staffying)、实发工资(@staffshi)为输入参数返回指定员工工资信息的存储过程。
stsffCost代码如下:
CREATEPROCEDUREstaffCost
@staffgongzidecimal,
@staffchuqindecimal,
@staffjiabandecimal,
@staffyingdecimal,
@staffshidecimal
AS
SELECT*
FROM工资
WHERE工资年月=@staffgongziAND
出勤天数=@staffchuqinAND
加班工资=@staffjiabanAND
应发工资=@staffyingAND
实发工资=@staffshi
(2)指定范围的员工的信息查询。
以员工工号、部门编号为输入参数返回指定员工基本信息的存储过程,要求输入部分员工信息查询员工全部信息。
定义一个名为stsffInfo的存储过程,该存储过程以员工工号(@staffNum)、部门编号(@bmNum)作为输入参数,存储过程返回查询到的结果集。
satffInfo的定义代码如下:
CREATEPROCEDUREstaffInfo
@staffNumVARCHAR(50)='
%'
@bmNumVARCHAR(50)='
FROM员工,部门
WHERE员工.部门名称=部门.部门名称AND
((员工.工号LIKE@staffNumVARCHAR(50)+'
)AND
(部门编号LIKE@bmNumVARCHAR(50)+'
))
GO
(3)统计指定年份各部门每个月份的工资总额。
以年份为输入参数,以总工资金额为输出参数,产生该年度12个月份的每部门工资统计的存储过程。
定义该存储过程名为bmMonhSum,输入参数为@ThisYear,实现代码如下:
CREATEPROCEDUREbmMonthSum
@ThisYearCHAR(10)
SELECTDATEPART(MM,工资年月)AS员工工资月份,SUM(实发工资)AS部门人数
FROM员工,工资,部门
WHERE员工.工号=工资.工号AND员工.部门名称=部门.部门名称ANDDATEPART(YYYY,工资年月)=@ThisYear
GROUPBYDATEPART(MM,工资年月)
5.5触发器
(1)关键操作,在工资表里添加一条新的记录,实发工资会自动更新新的数据。
定义这个触发器名称为insert_工资。
代码如下:
createtriggerinsert_工资on工资forinsert
as
declare@ichar(20)
declare@bbint
set@i=case
when@bb=0001then'
实发工资'
when@bb=0002then'
end
print@i
(2)员工新调入
进行员工新调入操作是在员工信息表中添加一条新的记录,可以为员工信息表设计一个Insert触发器,当员工信息表执行Insert操作后自动更改出部门信息表相应记录的数据。
定义这个触发器名称为staff_insert。
其代码如下:
CREATETRIGGERstaff_insertON员工
FORINSERT
ASIF(SELECTCOUNT(*)
FROM部门,inserted,工资
WHERE部门.部门人数=inserted.部门人数AND工资.工号=inserted.工号)=0
ROLLBACKTRANSACTION
(3)员工调出
进行员工调出操作是在员工信息表中删除该员工的记录,可以为员工信息表设计一个Delete触发器,当员工信息表执行Delete操作后,工资表、部门表中的记录也将全部删除。
定义这个触发器名称为staff_delete。
其实现代码如下:
CREATETRIGGERstaff_deleteON员工
FORDELETE
ASSELECTCOUNT(*)
FROM部门,工资,deleted
WHERE部门.部门人数=deleted.部门人数AND工资.工号=deleted.工号
(4)员工内部调动
为员工表设计一个名为staff_update的UPDATE触发器,当系统对员工表进行UPDATE操作后,将会自动触发它。
该触发器将相应记录的部门人数、部门名称、工资更新。
下面是client_update触发器的定义代码;
CREATETRIGGERstaff_updateON员工
FORUPDATE
FROMupdated,部门
WHERE部门.部门名称=updated.部门名称
5.6索引
为提高检索性能,为表创建符合索引,其索引项为工号、姓名。
CREATEINDEX工号_姓名_ind
ON员工(工号,姓名)
6各模块设计要点
6.1登录模块设计
登录模块是所有用户进入工资管理系统的唯一途径,除了确定用户类型以外,还要注意用户登录的密码是否与后台数据库的一致,如果不一致则会弹出图4.2所示的提示信息。
用户在登录模块出现的所有情况我都予以考虑了。
在用户登录时根据判断用户的权限,在模块中有“Ifpower<
>
"
管理员"
Thenfrm_main.set.Enabled=Falsefrm_main.defend=False”的代码,此项决定了主界面的操作模块。
6.2用户管理设计
在添加用户模块中,我仿造了一般填写信息时的方法设计了“确认密码”操作,如果在操作错误时候会弹出如图6.1所示的提示信息,点击确定后,鼠标自动停在密码文本框中,用户不需要再次输入用户名,在此说明一下,在我做的系统中几乎所有的错误转移都有如上的提示和获得焦点的操作。
删除用户模块中,在用户点击了确定按钮以后,会有如图6.1所示的对话框,为用户删除考虑了情况。
图6.1“确认密码”错误
6.3信息管理设计
这个部门主要由部门信息和员工信息组成,发放工资是对员工工资的管理,部门信息的设置和员工信息设置基本相同。
6.4查询工资设计
在这个版块中,主要是设计员工工资信息的基本内容,员工可输入自己的编号查找自己的工资信息。
管理员可对其信息进行管理。
包括查找、打印、添加、编辑、删除、退出这几个方面的管理。
7运行与测试
7.1运行与测试
图7.1创建并查询职工信息表代码截图
图7.2数据库中职工考勤表截图
图7.3查询考勤表结果截图
图7.4数据库中职工津贴表截图
图7.5查询津贴表结果截图
图7.6职工月工资表结果截图
7.2分析
软件测试是保证软件质量的关键,它是对需求分析设计和编码的最后复审。
在软件生命周期的每个阶段,都不可避免地会产生错误:
(1)在数据的插入的过程中,插入的时候错误提示:
出现将截断字符串或二进制数据。
语句已终止。
出现错误的原因:
输入的字符串长度超过用户自定义长度。
解决方法:
改变用户自定义长度或者改变登录数据的长度。
(2)在编程序时第一次的时候没有设置工资计算表,导致在运行时不能正常进行运算。
改进方法:
增加一个工资计算表,在统计工资的时候利用工资计算表及之前录入的数据进行计算,导出工资表。
通常在编写出每个原程序后,就要对它进行必要的测试,这步工作自己来完成。
此后由专门的测试人员进行各种综合测试。
了解程序的内部结构和处理过程,对程序中重要的逻辑路线进行测试,在不同点检查程序状态,确定实际状态与时期的状态是否一致。
设计心得体会
查询工资时主要考虑用户的权限问题,主要在登录模块中用全局变量记录了用户的权限,在用户点击确定以后系统会统计权限,分配给用户正确的查询工资的方法。
该工资管理系统总体说来功能比较齐全,管理员和员工的一些基本的功能都已经具备;
数据库的设计方面,建有员工表、工资表。
数据库中存在一些问题,如数据冗余,不够完善。
但在做课程设计的过程中也遇到很多问题,一开始时其中最大的问题是数据库的连接部分,该部分直接影响到数据库与应用程序接口实现,而且必须注意数据库数据库的名称与连接数据库的取名以致.后来经过大家的合作努力解决了这个问题.在编写程序时,确实也遇到了很多困难,后来经过调试后终于把自已想到实现的功能一步步实现了,通过这次课程设计使我收获了好多,还复习了数据库相关语句的编写。
此次课程设计让我感受颇多:
做一个数据库其实是一件很有趣的事情。
想到自己可以创建一个小型的数据库系统,有点学习后的满足感。
数据库的建立非难事,难点在于数据库的连接和编程语言的选择。
再就是建立数据库系统的步骤,我的经验就是要先总体规划,再局部整理。
先做好总的界面,再通过该界面的布置一步一步实现其功能!
同时我体会到:
熟练的编程能力,对知识运用的烈渴望及其创新和团队的合作精神设做好一个大型数据库的基础。
因此通过此次课程设计我明显感觉到自身的不足,并希望以后能更加用心地运用所学知识和学习新的知识。
参考文献
[1]钱雪忠.数据库原理及其应用[M].北京:
邮电大学出版社,2007,8.
[2]Bain.SQLserver2000数据仓库与AnalysisServices[M].中国电力出版社,2003,2.
[3]王珊主编.数据库技术与联机分析处理[M].北京:
科学出版社,1998,5.
[4]赵松涛.SQLserver2000系统管理及其开发[M].人民邮电出版社,1981,2.
[5]王珊,萨师轩.数据库系统概论(第二版)[M].清华大学出版社,2002,2.
[6]张剑平.信息系统:
历史沿革与发展趋势[J].[浙江师范大学报].1994,4.
[7]朱志强.管理信息系统原理、开发及应用[M].复旦大学出版社.2007,109~194.
[8]程燕.工资管理系统的开发[J].[上海电机高等专科学校学报].2003,4.
[9]KennethC.Laudon,JanePriceLaudon.Managementinformationsystems.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 工资管理 系统 数据库 课程设计