2022年SQL工资管理系统课程设计报告 .pdf
设 计 报 告课题名称:工资管理系统学院:专业班级:学号:学生:指导教师:青岛理工大学琴岛学院教务处 2009 年 7 月 3日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 学生指导教师课题名称工资管理系统设计时间设计地点设计目的数据库系统课程设计是对学生学习完成数据库原理与技术课程的一次理论与实践的综合设计,旨在学生更好掌握数据库原理的理论知识,并且能根据所学习的数据库知识构建完善标准的数据库系统。一、设计目的工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。手工进行工资发放工作,需要反复地进行抄写、计算,不仅花费财务人员大量的时间,而且往往由于抄写不慎,出现张冠李戴 ,或者由于计算机的疏忽,出现工资发放错误的现象。计算机进行工资发放工作,不仅能够保证工资核算正确无误、快速输出,而且还可以利用工资数据库对有关工资的各种信息进行统计, 服务于财务部门其他方面的核算和财务处理。实现企业员工工资管理的系统化、规范化和自动化,能够和人事管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。二、数据库功能分析A. 信息输入功能1)输入员工的基本信息。包括:员工编号、姓名、性别、出生年月、参加工作时间、所属部门、职务、职称、政治面貌、婚姻状况等基本信息。2)输入员工的工资信息。包括:基本工资、岗位工资、住房补贴、津贴、工会会费、水电费、住房公积金、养老保险、奖惩。3)输入员工的部门信息。包括:部门编号、部门名称、部门负责人、部门人数。B. 数据修改删除功能1)修改和删除员工的基本信息。当单位人员的信息发生变化,如职称的改变,工作部门变动,或调离本单位等,系统应能修改员工的信息或将其从员工信息表中删除。2)修改和删除员工的工资信息。员工升职加薪、工资普调是企业中常见的事情,这就需要系统能方便对员工工资进行个别及批量的修改;如员工调离本单位,就应当从员工信息表中删除这个员工信息,将其工资信息表中相应的数据删除。3)修改和删除部门信息。当撤消一个部门时,能从部门信息表中将其删除。而当一个部门的名称发生改变时,系统中所有该项部门的名称应一致的改变。C. 查询和统计功能1) 能够查询指定员工的基本信息。2) 能够查询指定某个部门或全部部门的基本信息3) 查询某个员工的工资信息。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 员工工资信息4) 统计、汇总指定年份企业各部门或某个部门每个月或全年工资总额,汇总各部门的人数或本单位的总人数。5) 工资表月工资记录的生成功能。生成当月所有员工或某个部门的工资记录,同时能进行员工工资的计算,即计算应发金额、应扣金额及实发金额。三、数据库设计1. 需求分析:工资发放管理系统针对的用户是中小企业或学校,工资项目比较少,较为固定,工资管理涉及企业管理的多个方面, 如员工职务工种变化、 员工考勤情况、 员工加班情况、 等等。根据这些信息,在每个月的某个固定时间,生成企业全体员工的月工资。对于月工资,能够实现按照员工、部门、月、年进行统计分析,产生相应报表。需求信息整理( DFD 图)如下:基本工资第 1 层 DFD 图部门员工查询结 果员工 信息部门信息员工人事管理财务人员录入工资信息查询职工工资录入部门信息录入员工信息查询请求工资管理员员工信息津贴信息部门信息出勤统计工资管理查询结果查询请求工资信息员工第 0 层 DFD 图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 2.概念分析(E-R 图)员工姓名出生日期参加工作日期政治面貌职务所属部门婚姻状况性别姓名电话号码图一:员工基本信息实体E-R 图总 E-R 图1 1 N 1 N 1 1 1 1 1 N N 部门影响具有具有员工出勤津贴工资具有属于影响名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 部门人数部门名称部长部门号图二:员工部门实体E-R 图津贴月份职工编号津贴工资加班天数图四:员工津贴实体E-R 图考勤奖惩工资缺勤天数月份职 工 编号图三:员工考勤实体E-R图月工资工会会费住房公积金养老保险津贴住房补贴奖惩基本工资图五:员工月工资实体E-R 图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 3.逻辑设计:a.数据字典表 1 员工津贴表 jt 列名数据类型可否为空说明emp_no varchar(8) not null 员工号(主键一)Jiaban_month varchar(10) not null 加班时间 (主键二 ) jbtianshu char(2) null 加班天数Jiaban_jiangjin float null 加班工资表 2 考勤信息统计表格kq 列名数据类型可否为空说明emp_no varchar(8) not null 员工号 (主键一 ) Kaoqin_month varchar(10) not null 时间 (主键二 ) queqin char null 缺勤天数Kaoqin_gongzi float null 考勤工资表 3 工资标准表格 gzbz 列名数据类型可否为空说明Zw Varchar(10)not null 工种 (主键 ) Jibengongzi Float null 基本工资表 5 员工基本情况表 yg 列名数据类型可否为空说明emp_no VARCHAR(8) NOT NULL 员工号 (主键 ) emp_name VARCHAR(10) NULL 员工名称sex Char(2) NULL 性别Department_id Char(4) Not null 员工部门Emp_time VARCHAR2(6) NOT NULL 入公司时间Marry Varchar(4)Null 婚姻状况Telephon Char(11)Null 电话号码表 6 员工月工资表 ygz 列名数据类型可否为空说明emp_no VARCHAR2(6) NOT NULL 员工号 (主键一 ) jbgz NUMBER(6) NOT NULL 基本工资jt NUMBER(6) NULL 津贴Kq NUMBER(6) NULL 缺勤扣除Ygz_total NUMBER(6) NULL 总月工资ygz_date VARCHAR2(6) NOT NULL 月工资时间 (主键二 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - b.关系模式员工信息表(员工编号,员工姓名,性别,出生年月,参加工作时间,所属部门,职务,婚姻状况,政治面貌,电话号码)员工出勤表 (员工编号,统计时间,员工姓名,矿工次数,考勤工资) 员工津贴表 (员工编号,统计时间,员工姓名,加班天数,津贴工资) 员工月工资表 (员工编号,基本工资,住房补贴,津贴,工会会费,水电费,位房公积金,养老保险,奖惩,总工资 ) 部门信息表(部门编号,部门名称,部门负责人,部门人数)政治面貌)基本工资表(职位,基本工资)各表的属性都不能被分解, 所有非主属性都完全依赖每一个候选关键属性,也没有传递依赖,因此符合 1,2,3 范式。4. 物理设计数据库最终是要存储在物理设备上的, 为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构 ( 存储结构与存取方法 ) 的过程,就是数据库的物理设计。 数据库的物理结构依赖于给定的计算机系统和DBMS 。5. 实施与维护确定了数据库的逻辑结构和物理结构后,就可以用所选用的DBMS 提供的数据定义语言(DDL)来严格定义数据库,包括建立表、定义表的约束等。数据库系统投入运行后,对数据库设计进行评价、调整、修改等维护工作。四、程序源代码及其说明1创建数据库create database 工资管理on ( name=sales_dat, filename=d:sales.mdf ) Go 结果:命令已成功完成2. 创建表create table 员工( emp_no varchar(8) not null primary key, -职工编号emp_name varchar(10) not null , -姓名sex char(2) -性别check (sex=男or sex=女 ), birth_date datetime not null, -出生日期hir_date datetime not null, -参加工作日期名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - department_id char(4) not null, -所属部门zhiwu varchar(10) not null, -职务zhengzhimm varchar(10), -政治面貌marry varchar(4), -婚姻状况telephon char(11), -电话号码constraint old check (datediff(year,birth_date,hir_date)18) ) create table 部门( department_id char(4) not null primary key, -部门号department_name varchar(6) not null, -部门名称manager varchar(6), -部长dep_renshu varchar(4) -人数) create table 考勤( emp_no varchar(8) not null , - 职工编号kaoqin_month varchar(10) not null, -月份queqin char(2), -缺勤天数kaoqin_gongzi float, -奖惩工资constraint e_k primary key(emp_no,kaoqin_month) ) create table 津贴( emp_no varchar(8) not null , -职工编号jiaban_month varchar(10) not null, -月份jiabantianshu char(2), -加班天数jaban_jiangjin float, -津贴工资constraint e_j primary key(emp_no,jiaban_month) ) create table 基本工资( zhiwu varchar(10) not null primary key, jibengongzi float default 1500, ) create table 月工资名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - ( emp_no varchar(8) not null , department_id char(4) not null, jibengongzi float default 1500, -基本工资zhufangbutie float, -住房补贴gz_month varchar(10) not null, jaban_jiangjin float, -奖惩kaoqin_gongzi float, -津贴gonghuihuifei float, -工会会费zhfgjjin float, -住房公积金yanglaobaoxian float, -养老保险wagecount as jibengongzi+zhufangbutie+jaban_jiangjin+kaoqin_gongzi+gonghuihuifei+zhfgjjin+yanglaobaoxian constraint e_g primary key(emp_no,gz_month) ) Go 结果:命令已成功完成3.插入数据insert 员工 values(20070101,狄一 ,男,1985-1-1,2007-1-1,01, 部长 ,团员 ,否,1234567890) insert 员工 values(20070102,狄二 ,女,1985-1-2,2007-1-2,01, 员工 ,党员 ,否,1234567891) insert 部门 values(01,人事部 ,狄一 ,20) insert 部门 values(02,财务部 ,狄六 ,10) insert 考勤 values(20070101,200905,0,0) insert 考勤 values(20070101,200906,2,-60) insert 津贴 values(20070101,2000905,05,15) insert 津贴 values(20070101,2000906,0,0) insert 基本工资values(员工 ,1500) insert 基本工资values(组长 ,2000) insert 月工资 values(20070101,01,2000,0,2000905,0,15,0,0,0) insert 月工资 values(20070102,01,1500,0,2000905,-30,0,0,0,0) 结果: (所影响的行数为12 行)4.创建、绑定默认值create default gongzi_defa as 0 exec sp_bindefault gongzi_defa, 考勤 .kaoqin_gongzi exec sp_bindefault gongzi_defa, 津贴 .jaban_jiangjin exec sp_bindefault gongzi_defa, 月工资 .gonghuihuifei 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - exec sp_bindefault gongzi_defa, 月工资 .zhfgjjin exec sp_bindefault gongzi_defa, 月工资 .yanglaobaoxian exec sp_bindefault gongzi_defa, 月工资 .zhufangbutie go 5.创建触发器a. 员工表中删除一条信息,其他表相应员工信息删除create trigger em on 员工for delete as delete from 考勤where emp_no in (select emp_no from deleted) delete from 津贴where emp_no in (select emp_no from deleted) delete from 月工资where emp_no in (select emp_no from deleted) go 结果:命令已成功完成验证 : delete from 员工where emp_no=20070101 go 结果: (所影响的行数为2 行)(所影响的行数为2 行)(所影响的行数为1 行)b. 一个部门删除,此部门中的员工信息删除create trigger bm on 部门for delete as delete from 员工where department_id in (select department_id from deleted) 结果:命令已成功完成验证 : delete from 部门where department_id=01 结果: (所影响的行数为0 行)(所影响的行数为0 行)(所影响的行数为1 行)(所影响的行数为1 行)c.员工职务变动,基本工资改变create trigger jbgz on 员工for update,insert 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - as declare q varchar(12) declare m varchar(12) declare s float select q=emp_no from Deleted select m=zhiwu from Inserted select s=jibengongzi from 基本工资where zhiwu=m update 月工资set jibengongzi=s where 月工资 .Emp_no=q结果:命令已成功完成6.创建函数a.函数查询员工基本信息create function ygxx(yg_id varchar(10) returns table as return(select * from 员工where emp_no=yg_id) 结果:命令已成功完成验证 : select * from dbo.ygxx(20070202) 结果:b.函数查询部门信息create function bumen(bumen_id varchar(4) returns table as return(select * from 部门where department_id=bumen_id) go 结果:命令已成功完成验证 : select * from dbo.bumen(03) go 结果:7.创建存储过程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - a.存储过程查询员工基本信息create proc ygxx2 yg_id varchar(10) as select * from 员工where emp_no=yg_id go 结果:命令已成功完成。b.存储过程查询指定某个部门或全部部门的基本信息create proc bumen2 bumen_id2 varchar(4) as select * from 部门where department_id=bumen_id2 create proc bumenq as select * from 部门go 结果:命令已成功完成。c.存储过程查询某个员工的工资信息create proc gzxx - yg_id varchar(10) as select * from 月工资where emp_no=yg_id go 结果:请输入员工id d.汇总部门月份工资create proc gzhz dep_id varchar(04),month_year varchar(10) as select department_id,gz_month from 月工资where department_id=dep_id and gz_month=month_year order by department_id,gz_month go 结果:命令已成功完成e.汇总工资总和exec gzhz 03,200905 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - create proc sum_sum as select department_name,gz_month,sum(wagecount) from 部门 ,月工资where 部门 .department_id=月工资 .department_id group by department_name,gz_month go 结果:命令已成功完成五、总结1. 过程(1)在对员工表创建删除触发器时,无法删除表记录,删除与其他表的外键约束后,触发器能正常运行。(2)触发器、存储过程等的建立与使用语句同时运行无法实现,先创建再执行程序正常运行。(3)在创建员工表时职务的类型是text,但在创建基本工资表时职务作为主键出现错误。把职务改成 varchar 类型后运行正常(4)在插入数据时文字长度超出数据类型的长度出现文字被截取的现象。(5)对基本的 SQL语句掌握不牢固,通过查询资料后基本掌握。2. 体会此系统的规划虽然已经完成, 功能基本实现了目标规划一些重要功能,但由于时间仓促,所以只满足了基本要求, 并没有过多考虑到系统的技术含量,在这次系统的开发过程中学到了好多知识,而且更加深入,而且更加熟练地掌握了Microsoft SQL Server 数据库,锻炼了我的项目开发能力, 使我对软件工程的知识有了更深刻的理解、更贴切的感受。 在这过程中有许多不顺利的时候,然后就和我就找同学讨论,实在讨论不出来,就到图书馆、上网查资料培养了自己查资料和同学讨论的好习惯,这些对即将走上工作岗位的我是有很大的帮助的,相信我以后工作时在这些方面会做的更好。3. 建议实践上机时间过少,限制了我们做出更完善的数据库,希望能有更充足的实践时间。4. 回顾:通过这次的数据库实习,对许多原来不太清楚的知识点有了更进一步的了解,写代码的时候要细心, 注意代码中的一切标点符号都要用英文,创建表插入记录时新插入的记录要加单引号,插入记录时新插入的元组顺序与属性的顺序要一致,常见存储过程时, 需要用到变量的要先声明变量,创建了外键约束时,要先对不被约束的表进行操作。指导教师评语名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 系部教研室意 见名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -