《sql数据库课程设计工资管理系统(共18页).doc》由会员分享,可在线阅读,更多相关《sql数据库课程设计工资管理系统(共18页).doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上河南城建学院数据库技术及其应用课程设计报告书题 目: 工资管理系统 系 部: 数理系 专 业: 数学与应用数学 班 级: 姓 名: 学 号: 指导教师: -河南城建学院2013年 1 月 11日专心-专注-专业目录第一章 选题的背景和意义1 选题的背景随着公司业务的扩展,人员的增多,传统的手工作业已经不再适合公司发展的需要所以引进计算机技术对企业内部员工进行方便的管理,这样有诸多好处,各层管理人员可以对企业众多的员工信息进行动态的管理,例如基本资料的修改,添加,删除,查询等。有利于减少错误,减轻人事部门的任务,提高效率,节约人力资源,降低企业成本。1.2选题的意义 随
2、着经济的发展,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。如何设计一个小型企业工资的数据库管理系统,由计算机代替人工执行一系列诸如增加新员工,删除旧员工,工资查询,统计等操作。这样就使办公人员可以轻松快捷地完成工资管理的任务。 对于企、事业单位的工资发放来说,不需要太大型的数据库系统。只需要一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位三方对数据的管理及需求的系统。企业的目标就是在于利用数据库编程设计一个操作方便、简单实用的工资管理系统。 实现工资的集
3、中管理。可供管理人员对本单位的人员以及工资进行增加、删除、修改、查询,对人事的管理及工资发放中的应发工资合计等项目由系统自动进行计算;同时系统还可对人事及工资管理情况进行多角度查询。 利用数据库对小型企业的工资进行管理,不仅可以节省开支,而且还可以节省时间,充分发挥了其小却精的特点,通过对这个数据库的编程,也是企业认识到了自己在很多方面的不足,也掌握了很多应用方面的技巧。第二章 数据库结构设计2.1需求分析本系统开发的主要目标是要企事业单位工资管理实现计算机管理,使管理员能够有序的管理每一位职工的各项工资条款的发放,以及企业工资的统计,使企业运用现代化技术创造更多更高的经济效益,在此基础上开发
4、一个工资管理系统。实现本单位财务部门对工资发放的集中管理。可供财务人员对本单位的人员进行增加、修改、删除、更新、查询,对工资发放中的应发工资合计,同时本系统还可以对工资发放情况进行多角度查询,能够按不同的条件进行查询。2.1.1 总体需求(1).建立对企业员工工资全面管理的信息系统;(2).对所有的职工提供全面管理;(3).对系统的安全提供全面管理; (4).对职工信息的添加、删除提供全面管理; 2.1.2 功能需求 (1) 对工资记录进行录入。(2) 对工资信息进行查找。 (3) 对多个工资记录进行浏览。(4) 对记录进行满足各种实际需要的修改。 (5) 对各项工资的总和和总的人数进行统计。
5、 数据介绍静态数据:职工基本信息,职工出缺勤信息。动态数据:职工基本信息,职工工资信息,奖金,职工出缺勤信息。 数据库介绍职工基本信息数据库:包括职工的工号,姓名,所属部门职工出缺勤信息数据库:包括职工的工号,姓名,缺勤次数职工工资信息数据库:包括职工的工号,姓名,基本工资,原始奖金,缺勤金,实际工资 功能描述职工基本信息管理系统: 采集职工的工号,姓名,所属部门,并可以进行查询和修改。职工出勤管理系统: 采集职工的工号,姓名,缺勤次数,并可以进行查询职工工资管理系统: 为实际工资及奖金计算提供数据源,向各部门传输标准工资信息 安全性分析 采用严格的用户验证与权限控制,用户需要通过身份验证才能
6、进入本系统,没用权限的用户不能使用本系统,每个用户只能修改自己的密码,保密性良好,确保系统安全可靠。2.2 概念结构设计部门部门负责人员工工资基本工资加班工资其他奖金 工号姓名部门号 工种性别 电话11 1n11n1 图2-1员工工资管理系统关系图1 员工 从事 工种工作工作时间 工资 核准 部门设置 图2-2 ER关系图2.3逻辑结构设计将管理系统的E-R图转换为关系数据库的数据模型,其关系模式为: (1)员工档案(姓名,性别,职位,电话,状态,部门号),其中员工编号为主键,部门号为外键;(2)出勤记录(出勤编号,员工号,签到时间,签出时间),出勤编号为主键,员工号为外键; (3)工资记录(
7、员工号,基本工资,岗位津贴,加班补贴,出差补贴,违纪扣除,发薪日期),工资编号为主键,员工号为外键。 (4)部门记录(部门编号,名称,领导人号),部门编号为主键。 将工资管理系统定名为“工资管理系统”。 2.4物理结构设计由于该系统主要用于员工的工资增加、删除、更改和查询,所以应用程序这要就是这几个功能。我们建立数据库的存储模式,文件结构,指定数据库文件的名称,并为设计好的关系模型设计表结构。员工(姓名,工号,部门,工种,性别,生日,电话)工种(工种号,基本工资,时加班津贴)月工作时间(工号,每日上班时间,每日下班时间)部门(部门号,负责人,负责人电话) 表2-1员工字段名类型宽度小数主键/索
8、引参照表约束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月工作时间(每个月生成一个表)字段名类型宽度小
9、数主键/索引参照表约束Null值 工号(id)文本型10员工月初上班时间(st1)日期型月初下班时间(dt1)日期型 -日期型 -日期型 -日期型月末上班时间(st1) 日期型月末下班时间(dt1)日期型 (1) 给每个表实施主键约束: 主键约束、非空值约束 ; 员工:工号为主键,所以此项非空 ; 部门:部门名称为主键,所以此项非空 ; 工资:工号为主键,所以此项非空。(2)外键约束 员工表中,工号、部门名称为外键。 (3)惟一约束 每个表的主键需定义为惟一性: 对于工资表,因为工号是主键,联系着员工表,所以建立唯一性 。 图2-3数据关系图第三章 程序代码实现3.1创建表: 表一:depar
10、tment Create table dbo.departmentdp nchar(20) collate Chinese_prc_ci_as null,dp snchar(10) collate Chinese_prc_ci_as not null,rs nchar(8) collate Chinese_prc_ci_as not null,rt nchar(11) collate Chinese_prc_ci_as not null, Constrant pk_部门表 primary key clustered dps asc with (ignore_dup_key = off) on
11、primary on primary 表二: monthtime CREATE TABLE dbo.monthtime(id nchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL,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
12、 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 NU
13、LL,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 datetim
14、e 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 dat
15、etime NULL,dt30 datetime NULL, CONSTRAINT PK_月工作时间表 PRIMARY KEY CLUSTERED (id ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY表三: profession CREATE TABLE dbo.profession(ws nchar(12) COLLATE Chinese_PRC_CI_AS NOT NULL,dp nchar(20) COLLATE Chinese_PRC_CI_AS NULL,sub int NULL,fs int NULL, CONSTRA
16、INT PK_工种表 PRIMARY KEY CLUSTERED (ws ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY表四: worker CREATE TABLE dbo.worker(sn nchar(10) COLLATE Chinese_PRC_CI_AS NULL,id nchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL,dps nchar(10) COLLATE Chinese_PRC_CI_AS NULL,ws nchar(12) COLLATE Chinese_PRC_CI_A
17、S NULL,sex nchar(2) COLLATE Chinese_PRC_CI_AS NULL,birth datetime NULL,tele nchar(11) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_员工表 PRIMARY KEY CLUSTERED (id ASC )WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY ) ON PRIMARY GO3.2数据导入: 表3-1department 部门(dp)部门号(dps)负责人(rs)负责人电话(rt)研发部 1000张鹏程稽核部1001李晨宣传部10
18、02魏晨 表3-2monthtime 表3-3profession 工种(ws)部门(dp)时加班津贴(sub)基本工资(fs)干事宣传部1003500经理稽核部1004500文书稽核部903000表3-4worker3.3查询功能的实现: 考勤信息记录作为一种原始的数据资料,作为核算员工工资的根本依据,一般不允许用户对其进行编辑和删除。因此该模块的主要功能是对考勤机发来的原始数据的存储和对现有考勤记录的显示。由于考勤数据量较大再用窗体的显示方法显然是不合适的,因此这里通过列表控件来显示记录集中的数据。企业进行考勤的目的是为了有效控制员工的迟到、早退及旷工等不良现象。但不能简单的根据某员工缺少
19、某天的考勤记录就认定该员工违反工作纪律。例如:员工在请过事病假并得到领导批准、因工作需要外派而不能在有效时间内赶回公司刷卡的现象就应在月末汇总时剔除在外。(1) 计算每个员工的工资,生成临时表如下(每个月统计结果):表3-5工资条 姓名 工号 基本工资加班津贴其他补贴 迟到早退请假SQL查询语言如下:(1) 将有考勤机获得的员工上班时间(我们在此仅取五天的上下班情况)由年月日时分转换成有时分,形成一个新表格new_table(员工号,月初上班时间,- - - -,月末下班时间)新表格中的时间不含有年月日,以便于与上班时间比较和简化存储量。 new_table表格的SQL语言形成如下:use 工
20、资管理系统goselect id as 员工号,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日上班时间,con
21、vert(varchar(10),dt4,108) as 4日下班时间,convert(varchar(10),st5,108) as 5日上班时间,convert(varchar(10),dt5,108) as 5日下班时间into new_table from monthtime表3-6上下班时间表 (2)形成每个月的考勤表,利用上面形成的表格做为参照表,建立考勤表(正常,迟到,早退,加班,请假,缺勤情况(即上下班时间为空值时仅视为缺勤)。当然也可以建立存储过程worker_id,方便查询。use 工资管理系统goselect idcase when datediff(minute,con
22、vert(varchar(10),st1,108),8:00)0then 早退when datediff(minute,18:00,convert(varchar(10),dt1,108)=0and datediff(minute,18:00,convert(varchar(10),dt1,108)=25then加班 end as 1号下班情况,case when datediff(minute,convert(varchar(10),st2,108),8:00)0then 早退when datediff(minute,18:00,convert(varchar(10),dt2,108)=0a
23、nd datediff(minute,18:00,convert(varchar(10),dt2,108)=25then加班 end as 2号下班情况,case when datediff(minute,convert(varchar(10),st3,108),8:00)0then 早退when datediff(minute,18:00,convert(varchar(10),dt3,108)=0and datediff(minute,18:00,convert(varchar(10),dt3,108)=25then加班 end as 3号下班情况,case when datediff(m
24、inute,convert(varchar(10),st4,108),8:00)0then 早退when datediff(minute,18:00,convert(varchar(10),dt4,108)=0and datediff(minute,18:00,convert(varchar(10),dt4,108)=25then加班 end as 4号下班情况,case when datediff(minute,convert(varchar(10),st5,108),8:00)0then 早退when datediff(minute,18:00,convert(varchar(10),dt
25、5,108)=0and datediff(minute,18:00,convert(varchar(10),dt5,108)=25then加班 end as 5号下班情况from monthtime 生成表格如下:表3-7考勤表 有上述生成的表格,属于交叉表的类型,在数据统计的过程中,需要进行行列置换,通过SQL中的piovt运算符实现交叉表的行列互换,然后运用循环语句统计迟到,早退及缺勤的次数。 (3)对员工的工作时间汇总,统计出每个月员工每天个工作时间(在此统计五天的工作时间)。利用该表来计算工资时,不考虑由于迟到所扣除的工资,月份中所包含的节假日给予的特殊的工资以及加班所工作的时间作为迟
26、到时间个弥补和加班时间不足25分钟的不予考虑。表中时间的单位以分钟计。SQL语言程序如下:对于加班时间不足一小时的,不统计在加班时间之内。生成表如下:use 工资管理系统goselect worker.sn ,monthtime.id ,datediff(minute,st1,dt1) as 1号工作时间,datediff(minute,st2,dt2) as 2号工作时间,datediff(minute,st3,dt3) as 3号工作时间,datediff(minute,st4,dt4) as 4号工作时间,datediff(minute,st5,dt5) as 5号工作时间into 月时
27、间总表from monthtime,workerwhere worker.id=monthtime.id表3-8工作时间统计表 (4)计算每个员工的每个月的工资形成如下表格:表3-9工资表内容 姓名 工号 基本工资加班津贴其他补贴加班总时间 SQL程序如下:在计算工资时,我们暂不考虑周末及节假日的工资情形,分别求出员工每天加班的时间,然后得到月总加班时间,对于因为迟到,早退等叩工资的情况,暂不在程序的求解范围之内。在此,我们仅求5天的工资情况。select worker.sn as 员工名,worker.id as 员工号,fs as 基本工资,1号工作时间+2号工作时间+3号工作时间+4号工
28、作时间+5号工作时间-5*8 as 加班总时间,(floor(1号工作时间+2号工作时间+3号工作时间+4号工作时间+5号工作时间)/30)-5*8*60-10)*fs/50*2+fs/25 as 工资into 工资条from worker,profession,月时间总表where worker.ws=profession.ws and worker.id=月时间总表.id计算出结果如下表:表3-10工资表3.4其他实现: 通过四个表的关联,还可以实现生成公司的企业报表,和核算公司的劳务成本等。也可以计算出每个员工每个月迟到,早退的次数,缺勤的次数以及相应时间,但是没有能够对节假日,换假,换
29、班,部门岗位调动,轮班等一些太多涉及认为因素的情况做出详细的分析。 第四章 课程设计总结刘保朋小结: 我主要负责第二章的部分内容和一些小的细节,包括需求分析和逻辑设计。其中需求分析主要是了解用户的要求和处理要求并写成说明书,在这一步骤中我通过搜索查询相关资料了解了工资管理系统所需要的数据及处理要求,而逻辑设计则是数据模式的转换。 其中涉及到了员工的各种信息及其工资情况和奖金方面的数据,还有对其进行一些几班操作的功能和安全性分析。在这次课程设计中,我学到了很多,刚开始只是知道理论,上机的时候也只是对整个数据库的一部分进行实践操作,像这样的全面的分析还是第一次,又加上掌握的知识不是特别牢固,所以刚
30、开始的时候非常迷茫,不知道如何下手,经过与组员的讨论交流,老师的指导以及对有关资料的查询使我们终于有了落脚点,经过我们组的努力最终完成了这次课程设计。通过这次课程设计是我进一步的了解了数据库技术,深感自己学到的只是皮毛中的皮毛,更激起了我进一步学习数据库的热情。这次课程设计中还有很多方面没有考虑全面及一些功能无法实现。往后我会更加努力的学习数据库技术,掌握更多相关的知识做出更好的设计。参考文献:1孙明丽 王斌 sql server 2005 数据库系统开发 人民邮电出版社 20072姜桂洪 张龙波等 SQL Sever 2005 数据库应用与开发 清华大学出版社 20103贺利坚等 数据库技术与应用 北京:北京希望电子出版社 20024丁宝康等 数据库实用教程 北京:清华大学出版社 20015 李建中等 数据库系统原理 北京:电子工业出版社 19986施伯乐等 数据库技术 北京:科学出版社 20027 徐洁磐 现代数据库系统教程 北京:北京希望电子出版社 2002