sql数据库课程设计工资管理系统.docx
- 文档编号:20103494
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:21
- 大小:260.07KB
sql数据库课程设计工资管理系统.docx
《sql数据库课程设计工资管理系统.docx》由会员分享,可在线阅读,更多相关《sql数据库课程设计工资管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
sql数据库课程设计工资管理系统
河南城建学院
《数据库技术及其应用》课程设计报告书
题目:
工资管理系统
系部:
数理系
专业:
数学与应用数学
班级:
姓名:
学号:
指导教师:
--------------
河南城建学院
2013年1月11日
第一章选题的背景和意义
1选题的背景
随着公司业务的扩展,人员的增多,传统的手工作业已经不再适合公司发展的需要所以引进计算机技术对企业内部员工进行方便的管理,这样有诸多好处,各层管理人员可以对企业众多的员工信息进行动态的管理,例如基本资料的修改,添加,删除,查询等。
有利于减少错误,减轻人事部门的任务,提高效率,节约人力资源,降低企业成本。
1.2选题的意义
随着经济的发展,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。
在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。
如何设计一个小型企业工资的数据库管理系统,由计算机代替人工执行一系列诸如增加新员工,删除旧员工,工资查询,统计等操作。
这样就使办公人员可以轻松快捷地完成工资管理的任务。
对于企、事业单位的工资发放来说,不需要太大型的数据库系统。
只需要一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位三方对数据的管理及需求的系统。
企业的目标就是在于利用数据库编程设计一个操作方便、简单实用的工资管理系统。
实现工资的集中管理。
可供管理人员对本单位的人员以及工资进行增加、删除、修改、查询,对人事的管理及工资发放中的应发工资合计等项目由系统自动进行计算;同时系统还可对人事及工资管理情况进行多角度查询。
利用数据库对小型企业的工资进行管理,不仅可以节省开支,而且还可以节省时间,充分发挥了其小却精的特点,通过对这个数据库的编程,也是企业认识到了自己在很多方面的不足,也掌握了很多应用方面的技巧。
第二章数据库结构设计
2.1需求分析
本系统开发的主要目标是要企事业单位工资管理实现计算机管理,使管理员能够有序的管理每一位职工的各项工资条款的发放,以及企业工资的统计,使企业运用现代化技术创造更多更高的经济效益,在此基础上开发一个工资管理系统。
实现本单位财务部门对工资发放的集中管理。
可供财务人员对本单位的人员进行增加、修改、删除、更新、查询,对工资发放中的应发工资合计,同时本系统还可以对工资发放情况进行多角度查询,能够按不同的条件进行查询。
2.1.1总体需求
(1).建立对企业员工工资全面管理的信息系统;
(2).对所有的职工提供全面管理;
(3).对系统的安全提供全面管理;
(4).对职工信息的添加、删除提供全面管理;
2.1.2功能需求
(1)对工资记录进行录入。
(2)对工资信息进行查找。
(3)对多个工资记录进行浏览。
(4)对记录进行满足各种实际需要的修改。
(5)对各项工资的总和和总的人数进行统计。
数据介绍
静态数据:
职工基本信息,职工出缺勤信息。
动态数据:
职工基本信息,职工工资信息,奖金,职工出缺勤信息。
数据库介绍
职工基本信息数据库:
包括职工的工号,姓名,所属部门
职工出缺勤信息数据库:
包括职工的工号,姓名,缺勤次数
职工工资信息数据库:
包括职工的工号,姓名,基本工资,原始奖金,缺勤金,实际工资
功能描述
职工基本信息管理系统:
采集职工的工号,姓名,所属部门,并可以进行查询和修改。
职工出勤管理系统:
采集职工的工号,姓名,缺勤次数,并可以进行查询
职工工资管理系统:
为实际工资及奖金计算提供数据源,向各部门传输标准工资信息
安全性分析
采用严格的用户验证与权限控制,用户需要通过身份验证才能进入本系统,没用权限的用户不能使用本系统,每个用户只能修改自己的密码,保密性良好,确保系统安全可靠。
2.2概念结构设计
1
1
n
1
图2-1员工工资管理系统关系图
图2-2ER关系图
2.3逻辑结构设计
将管理系统的E-R图转换为关系数据库的数据模型,其关系模式为:
(1)员工档案(姓名,性别,职位,电话,状态,部门号),其中员工编号为主键,部门号为外键;
(2)出勤记录(出勤编号,员工号,签到时间,签出时间),出勤编号为主键,员工号为外键;
(3)工资记录(员工号,基本工资,岗位津贴,加班补贴,出差补贴,违纪扣除,发薪日期),工资编号为主键,员工号为外键。
(4)部门记录(部门编号,名称,领导人号),部门编号为主键。
将工资管理系统定名为“工资管理系统”。
2.4物理结构设计
由于该系统主要用于员工的工资增加、删除、更改和查询,所以应用程序这要就是这几个功能。
我们建立数据库的存储模式,文件结构,指定数据库文件的名称,并为设计好的关系模型设计表结构。
员工(姓名,工号,部门,工种,性别,生日,电话)
工种(工种号,基本工资,时加班津贴)
月工作时间(工号,每日上班时间,每日下班时间)
部门(部门号,负责人,负责人电话)
表2-1员工
字段名
类型
宽度
小数
主键/索引
参照表
约束
Null值
工号(id)
文本型
10
↑(主)
姓名(sn)
文本型
10
部门号(dps)
文本型
20
工种(ws)
文本型
12
性别(sex)
文本型
2
男or女
生日(birth)
日期型
电话(tele)
文本型
11
表2-2部门
字段名
类型
宽度
小数
主键/索引
参照表
约束
Null值
部门号(dps)
文本型
10
↑(主)
部门(dp)
文本型
20
负责人(rs)
文本型
8
负责人电话(rt)
文本型
11
表2-3工种
字段名
类型
宽度
小数
主键/索引
参照表
约束
Null值
工种(ws)
文本型
12
↑(主)
部门(dp)
文本型
20
基本工资(fs)
文本型
4
时加班津贴(sub)
文本型
4
表2-4月工作时间(每个月生成一个表)
字段名
类型
宽度
小数
主键/索引
参照表
约束
Null值
工号(id)
文本型
10
↑
员工
月初上班时间(st1)
日期型
月初下班时间(dt1)
日期型
-------------
日期型
-------------
日期型
-------------
日期型
月末上班时间(st1)
日期型
月末下班时间(dt1)
日期型
(1)给每个表实施主键约束:
主键约束、非空值约束;
员工:
工号为主键,所以此项非空;
部门:
部门名称为主键,所以此项非空;
工资:
工号为主键,所以此项非空。
(2)外键约束
员工表中,工号、部门名称为外键。
(3)惟一约束
每个表的主键需定义为惟一性:
对于工资表,因为工号是主键,联系着员工表,所以建立唯一性。
图2-3数据关系图
第三章程序代码实现
3.1创建表:
表一:
department
Createtabledbo.department
dpnchar(20)collateChinese_prc_ci_asnull,
dpsnchar(10)collateChinese_prc_ci_asnotnull,
rsnchar(8)collateChinese_prc_ci_asnotnull,
rtnchar(11)collateChinese_prc_ci_asnotnull,
Constrantpk_部门表primarykeyclustered
[dps]asc
with(ignore_dup_key=off)onprimary
onprimary
表二:
monthtime
CREATETABLE[dbo].[monthtime](
[id][nchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[st1][datetime]NULL,[dt1][datetime]NULL,[st2][datetime]NULL,[dt2][datetime]NULL,[st3][datetime]NULL,[dt3][datetime]NULL,[st4][datetime]NULL,[dt4][datetime]NULL,[st5][datetime]NULL,[dt5][datetime]NULL,[st6][datetime]NULL,[dt6][datetime]NULL,[st7][datetime]NULL,[dt7][datetime]NULL,[st8][datetime]NULL,[dt8][datetime]NULL,[st9][datetime]NULL,[dt9][datetime]NULL,[st10][datetime]NULL,[dt10][datetime]NULL,[st11][datetime]NULL,[dt11][datetime]NULL,[st12][datetime]NULL,[dt12][datetime]NULL,[st13][datetime]NULL,[dt13][datetime]NULL,[st14][datetime]NULL,[dt14][datetime]NULL,[st15][datetime]NULL,[dt15][datetime]NULL,[st16][datetime]NULL,[dt16][datetime]NULL,[st17][datetime]NULL,[dt17][datetime]NULL,[st18][datetime]NULL,[dt18][datetime]NULL,[st19][datetime]NULL,[dt19][datetime]NULL,[st20][datetime]NULL,[dt20][datetime]NULL,[st21][datetime]NULL,[dt21][datetime]NULL,[st22][datetime]NULL,[dt22][datetime]NULL,[st23][datetime]NULL,[dt23][datetime]NULL,[st24][datetime]NULL,[dt24][datetime]NULL,[st25][datetime]NULL,[dt25][datetime]NULL,[st26][datetime]NULL,[dt26][datetime]NULL,[st27][datetime]NULL,[dt27][datetime]NULL,[st28][datetime]NULL,[dt28][datetime]NULL,[st29][datetime]NULL,[dt29][datetime]NULL,[st30][datetime]NULL,[dt30][datetime]NULL,
CONSTRAINT[PK_月工作时间表]PRIMARYKEYCLUSTERED
(
[id]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
表三:
profession
CREATETABLE[dbo].[profession](
[ws][nchar](12)COLLATEChinese_PRC_CI_ASNOTNULL,
[dp][nchar](20)COLLATEChinese_PRC_CI_ASNULL,
[sub][int]NULL,
[fs][int]NULL,
CONSTRAINT[PK_工种表]PRIMARYKEYCLUSTERED
(
[ws]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
表四:
worker
CREATETABLE[dbo].[worker](
[sn][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[id][nchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[dps][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[ws][nchar](12)COLLATEChinese_PRC_CI_ASNULL,
[sex][nchar]
(2)COLLATEChinese_PRC_CI_ASNULL,
[birth][datetime]NULL,
[tele][nchar](11)COLLATEChinese_PRC_CI_ASNULL,
CONSTRAINT[PK_员工表]PRIMARYKEYCLUSTERED
(
[id]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
GO
3.2数据导入:
表3-1department
部门(dp)
部门号(dps)
负责人(rs)
负责人电话(rt)
研发部
1000
张鹏程
稽核部
1001
李晨
宣传部
1002
魏晨
表3-2monthtime
表3-3profession
工种(ws)
部门(dp)
时加班津贴(sub)
基本工资(fs)
干事
宣传部
100
3500
经理
稽核部
100
4500
文书
稽核部
90
3000
表3-4worker
3.3查询功能的实现:
考勤信息记录作为一种原始的数据资料,作为核算员工工资的根本依据,一般不允许用户对其进行编辑和删除。
因此该模块的主要功能是对考勤机发来的原始数据的存储和对现有考勤记录的显示。
由于考勤数据量较大再用窗体的显示方法显然是不合适的,因此这里通过列表控件来显示记录集中的数据。
企业进行考勤的目的是为了有效控制员工的迟到、早退及旷工等不良现象。
但不能简单的根据某员工缺少某天的考勤记录就认定该员工违反工作纪律。
例如:
员工在请过事病假并得到领导批准、因工作需要外派而不能在有效时间内赶回公司刷卡的现象就应在月末汇总时剔除在外。
(1)计算每个员工的工资,生成临时表如下(每个月统计结果):
表3-5工资条
姓名
工号
基本工资
加班津贴
其他补贴
迟到
早退
请假
SQL查询语言如下:
(1)将有考勤机获得的员工上班时间(我们在此仅取五天的上下班情况)
由年月日时分转换成有时分,形成一个新表格new_table(员工号,月初上班时间,--------,月末下班时间)新表格中的时间不含有年月日,以便于与上班时间比较和简化存储量。
new_table表格的SQL语言形成如下:
use工资管理系统
go
selectidas"员工号",convert(varchar(10),st1,108)as"1日上班时间",
convert(varchar(10),dt1,108)as"1日下班时间",
convert(varchar(10),st2,108)as"2日上班时间",
convert(varchar(10),dt2,108)as"2日下班时间",
convert(varchar(10),st3,108)as"3日上班时间",
convert(varchar(10),dt3,108)as"3日下班时间",
convert(varchar(10),st4,108)as"4日上班时间",
convert(varchar(10),dt4,108)as"4日下班时间",
convert(varchar(10),st5,108)as"5日上班时间",
convert(varchar(10),dt5,108)as"5日下班时间"
intonew_tablefrommonthtime
表3-6上下班时间表
(2)形成每个月的考勤表,利用上面形成的表格做为参照表,建立考勤表(正常,迟到,早退,加班,请假,缺勤情况(即上下班时间为空值时仅视为缺勤)。
当然也可以建立存储过程worker_id,方便查询。
use工资管理系统
go
selectid
casewhendatediff(minute,convert(varchar(10),st1,108),'8:
00')<0
then'迟到'
whenconvert(varchar(10),st1,108)isnullthen'缺勤'else'正常'
endas"1号上班情况",
casewhendatediff(minute,convert(varchar(10),dt1,108),'18:
00')>0
then'早退'
whendatediff(minute,'18:
00',convert(varchar(10),dt1,108))>=0
anddatediff(minute,'18:
00',convert(varchar(10),dt1,108))<25
then'正常'
whendatediff(minute,'18:
00',convert(varchar(10),dt1,108))>=25
then'加班'endas"1号下班情况",
casewhendatediff(minute,convert(varchar(10),st2,108),'8:
00')<0
then'迟到'
whenconvert(varchar(10),st2,108)isnullthen'缺勤'
else'正常'endas"2号上班情况",
casewhendatediff(minute,convert(varchar(10),dt2,108),'18:
00')>0
then'早退'
whendatediff(minute,'18:
00',convert(varchar(10),dt2,108))>=0
anddatediff(minute,'18:
00',convert(varchar(10),dt2,108))<25
then'正常'
whendatediff(minute,'18:
00',convert(varchar(10),dt2,108))>=25
then'加班'endas"2号下班情况",
casewhendatediff(minute,convert(varchar(10),st3,108),'8:
00')<0
then'迟到'
whenconvert(varchar(10),st3,108)isnullthen'缺勤'
else'正常'
end
as"3号上班情况",
case
whendatediff(minute,convert(varchar(10),dt3,108),'18:
00')>0
then'早退'
whendatediff(minute,'18:
00',convert(varchar(10),dt3,108))>=0
anddatediff(minute,'18:
00',convert(varchar(10),dt3,108))<25
then'正常'
whendatediff(minute,'18:
00',convert(varchar(10),dt3,108))>=25
then'加班'endas"3号下班情况",
casewhendatediff(minute,convert(varchar(10),st4,108),'8:
00')<0
then'迟到'
whenconvert(varchar(10),st4,108)isnullthen'缺勤'
else'正常'endas"4号上班情况",
casewhendatediff(minute,convert(varchar(10),dt4,108),'18:
00')>0
then'早退'
whendatediff(minute,'18:
00',convert(varchar(10),dt4,108))>=0
anddatediff(minute,'18:
00',convert(varchar(10),dt4,108))<25
then'正常'
whendatediff(minute,'18:
00',convert(varchar(10),dt4,108))>=25
then'加班'endas"4号下班情况",
casewhendatediff(minute,convert(varchar(10),st5,108),'8:
00')<0
then'迟到'
whenconvert(varchar(10),st5,108)isnull
then'缺勤'
else'正常'endas"5号上班情况",
casewhendatediff(minute,convert(varchar(10),dt5,108),'18:
00')>0
then'早退'
whendatediff(minute,'18:
00',convert(varchar(10),dt5,108))>=0
anddatediff(minute,'18:
00',convert(varchar(10),dt5,108))<25
then'正常'
whendatediff(minute,'18:
00',convert(varchar(10),dt5,108))>=25
then'加班'endas"5号下班情况"
fro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 数据库 课程设计 工资管理 系统