SQL server数据库毕业设计论文.docx
河南工业职业技术学院SQL server数据库基础大型作业(20092010学年第一学期)系部:计算机工程系专业:计算机网络技术课程名称:S Q L server 数据库班级:姓 名: 托尔学号:指导老师:2010114企业人事管理系统分析与概述摘要:信息技术为企业的发展提供了机遇,也带来 了挑战。如何改良企业内部经营机制,公正、客 观、全面、快捷地评估员工的业绩,实现以人为 本的经营战略,提高人事管理工作的效率,使人 事管理员有更多的精力去做人力资源分析、研究 和开发工作,是企业立足发展,开拓未来,领先 同行业的关键。本文叙述了 一个人事管理系统形 成的全过程,包括部分演示。本课程设计是一个企业人事管理系统的后台 数据库的设计,首先要查阅资料对企业人事管理 领域的基本知识有一定的认识,了解用户各个方 面的需求,包括现有的以及将来的可能增加的需 求。本数据库按照数据库设计的六个阶段进行设 计:需求分析、概念结构设计、逻辑结构设计、 物理结构设计、数据库实施、数据库的运行和维 护。关键词:企业人事、部门、工资、奖惩-XX. 刖 言随着计算机技术、网络技术和信息技术的发 展,越来越多地改善着现代人的观念。网络办公 自动化系统是计算机技术和网络迅速发展的一个 办公应用解决方案,它的主要目的是实现信息交 流和信息共享,提供协同工作的手段,提高办公的 效率,让人们从繁琐的有纸办公中解脱出来。现在 我国的许多的机关单位的人事管理水平还停留在 纸介质的基础上,这样的机制已经不能适应时代 的发展,因为它浪费了许多人力和物力,在信息 时代这种传统的管理方法必然被计算机为基础的 信息管理所取代。基于这种情况,我们研究开发了这套人事管 理系统,希望这套系统能为企业人事管理带来更 多的方便。本数据库的设计建设,虽然倾注我们小组所 有成员的努力,但是由于时间仓促水平有限,纸 漏和不足在所难免希望老师和同学们批评指正。目录第1章 实训目的及系统需求分析11.1实训目的11.1.1知识目标11.1.2能力目标11.1.3素质目标21.2需求分析21.2.1功能分析31.2.2系统特征41.2.3数据流程5第2章 系统开发工具及环境62.1系统开发工具介绍62.1.1 SQLServer 2005 简介62.1.2 T-SQL语言介绍62.1.3系统开发的环境介绍8第3章 系统的详细设计93.1系统的总体设计93.1.1系统的模块框架结构93.1.2系统数据库的表结构103.2系统的详细设计123.2.1实现模块之间的连接123.3系统的查询功能133.3.1查询全部员工的基本信息133.3.2详细查询员工信息143.3.3详细查询员工工资153.3.4查询员工工资发放时间加班工资163.3.5查询全体员工的工资173.4.1存储过程的实现183.5事务的使用193.5.1事务修改信息203.5.2事务调动部门213.6触发器的实现243.6.1删除触发器243.6.2添加触发器253.6.3提示触发器263.7函数的使用27结束语28致 谢29参考文献30第1章实训目的及系统需求分析1.1实训目的1.1.1知识目标通过综合实训进一步巩固、深化和扩展学生的SQL Server2005数据库管理和开发的基本知识和技能。熟练掌握 SQL Server 2005数据库的操作熟练掌握 SQL Server 2005表的操作熟练掌握 SQL Server 2005视图的操作和应用(4)掌握 SQL Server 2005索引的操作(5)熟练掌握SQL Server 2005 存储过程和T-SQL编程技 术的操作和使用(6)熟练掌握SQL Server 2005 触发器的操作和应用(7)掌握SQL Server 2005 数据安全性操作(8)熟练掌握SQL Server 2005 数据管理操作(9)了解SQL Server 2005 数据库程序开发技术1.1.2能力目标培养学生运用所学的知识和技能解决SQL Server 2005 数据 库管理和开发过程中所遇到的实际问题的能力、掌握基本的 SQL脚本编写规范、养成良好的数据库操作习惯。(1)培养学生通过各种媒体搜集资料、阅读资料和利用资 料的能力(2)培养学生基本的数据库应用能力(3)培养学生基本的编程逻辑思想(4)培养学生通过各种媒体进行自主学习的能力1.1.3素质目标培养学生理论联系实际的工作作风、严肃认真的工作态度 以及独立工作的能力。(1)培养学生观察问题、思考问题、分析问题和解决问题 的综合能力(2)培养学生的团队协作精神和创新精神(3)培养学生学习的主动性和创造性1.2需求分析企业人事管理系统的主要目的就是利用软件,替代原始的 人工管理模式,使企业走向信息化,电子化,自动化管理模式, 从而提高企业的人事管理效率。使企业管理简单化,降低企业 的管理成本。该系统应用我们本学期所学的SQL server 2005数据库 技术,主要实现企业人事信息的基本录入、修改、查询、删 除模块,员工调动信息的录入、修改、查询、删除模块,为企业人事管理提供信息咨询,信息检索,信息存取等服务,基 本上能够满足现代企业对人事管理的需要。1.2.1功能分析主要分为一下模块: 人事管理模块:该模块有可分为档案管理和奖惩管理。 该模块要实现的功能是让系统管理员实现员工基本信 息的录入工作。并存放在数据库内。 调动管理模块:该模块有可分为员工调动和员工退休。 该功能主要是实现企业各部门的人员调动功能,能够自 动的维护系统的完整型。再次功能中主要运用本学期我 们所学的触发器事务等一些高级数据库编程技术。 工资管理模块:该模块可以分为计件工资和加班提成工 资。在该模块中本企业的员工可以查询该员工在本月中 所做的工作以及工资。 考勤管理模块:该模块可以分为请假登记,主要实现的 功能是及时的记录该企业员工的病假、事假、以及请假 天数。1.2.2系统特征1. 全面完整性系统是用户日常工作的信息化管理平台。可减少大量的重复 录入工作。2. 易用性界面友好简洁。3. 灵活性独有”二次开发平台”功能,可方便地由用户自由进行数据和 界面更改,使软件完全贴切于用户的需要。强大的查询功能, 可灵活设置任意多条件进行组合查询。4. 开放性提供功能强大的数据接口,可方便的引入各类Office文档, 并增加了文档的安全性。5 .强大的报表/图表输出功能提供强大的报表制作与管理工具,用户可直接设计各种所需 报表。提供了灵活报表生成器,并随时进行设计更改。6.安全性一流的数据库加密技术。1.2.3数据流程存储存储第2章系统开发工具及环境2.1系统开发工具介绍2.1.1 SQLServer 2005 简介SQL Server2005 是一个全面的、集成的、端到端的数据解 决方案,它为企业中的用户提供了一个安全、可靠和高效的平 台用于企业数据管理和商业智能应用。SQL Server 2005为IT 专家和信息工作者带来了强大的、熟悉的工具,同时减少了在 从移动设备到企业数据系统的多平台上创建、部署、管理及使 用企业数据和分析应用程序的复杂度。通过全面的功能集、 和现有系统的集成性、以及对日常任务的自动化管理能力,SQL Server 2005为不同规模的企业提供了一个完整的数据解决方 案。2.1.2 T-SQL 语言介绍SQL ( Structure Query Languge ,结构化查询语言)是一种 数据库专用的计算机语言,不管是Oracle、MS SQL、Access、 MySQL或其他公司的数据库,也不管数据库建立在大型主机 或个人计算机上,都可以使用SQL语言来访问和修改数据库的 内容。虽然不同公司的数据库软件多多少少会增加一的些专属SQL语法,但大体上,它们还是遵循ASNI (美国国家标准协 会)制定的SQL标准。因为SQL语言具有易学习及阅读等特 性,所以SQL逐渐被各种数据库厂商采用,而成为一种共通的 标准查询语言。只要你学会SQL,即可操作各种数据库如 Visual Foxpro 、Access、dBase 等等。总之,SQL 语言是各种 数据库都可以使用的数据库查询语言。SQL语言不仅仅具有查询数据库的功能,而且可以对数据 库完成选取、增删、更新与跳转等各种操作。SQL语言是由命令(函数)、子句、运算符、加总函数 及通配符等组成,分述如下:SQL的命令可分成数据定义语言与数据操作语言,数据定 义语言可用来建立新的数据库、数据表、字段及索引等,本教 程不予介绍;另一为数据操作语言,可用来建立查询表、排序、 筛选数据、修改、增删等动作。数据定义语言命令常用的有选 择、添加、删除和修改这四种。2.1.3系统开发的环境介绍Windows XP可以作为运行SQL Sserver2005 最理想的系 统平台,开发软件就是用现学的 Microsoft Sserver2005 SQL Management Studio,它包括 SQL Sserver2000 企业管理器 (Enterprise Manager )和查询分析器(QueryAnalyzer ),等方 面的功能,给用户带来了很大的方便。此外SQL Sserver2005 管理平台还提供了一种环境,用于管理Analysis Services( 分析 服务)、Integration Services( 集 成服务)、Reporting Services (报 名服务)和Xquery。SQL Sserver2005 管理平台为我们这样的 开发者提供一个熟悉的环境。此外本次开发环境的硬件配置也不需要很高,并且学校提 供的机房上机环境完全可以满足我们的硬件要求。第3章系统的详细设计3.1系统的总体设计3.1.1系统的模块框架结构3.1.2系统数据库的表结构员工基本信息表(表3-1)表名:员工基本信息表字段数据类型备注员工编号Varchar(50)主键,允许为空员工姓名Nvarchar(50)员工姓名,不允许为空员工所属部门编号Int员工部门编号,不允许为空员工基本工资int员工工资,不允许为空员工职位名称Nvarchar(50)员工职位,不允许为空员工电话Nvarchar(50)员工电话,不允许为空员工报到日期datetime员工报到日期,不允许为空部门表(表3-2)表名:部门表字段数据类型备注部门编号Char(2)部门编号,不允许为空部门名称Char(10)主键,允许为空部门描述Char(50)部门描述,不允许为空部门经理编号Char(10)部门经理编号,不允许 为空员工姓名Nchar(10)员工姓名,不允许为空工资表(表3-3)表名:工资表字段数据类型备注工资编号Char(8)主键,允许为空员工编号Char(10)员工编号,不允许为空工资发放时间datetime工资发放时间,不允许 为空员工基本工资Int员工基本工资,不允许 为空加班工资Int加班工资,不允许为空缺薪扣除Int缺勤扣除,不允许为空其他工资int其他工资,不允许为空奖惩表(表3-4)表名:奖惩表字段数据类型备注奖惩编号bigint主键,允许为空员工姓名Varchar(50)员工姓名,不允许为 空奖惩日期datetime奖惩日期,不允许为 空奖惩类型Varchar(4)奖惩类型,不允许为 空奖惩情况Varchar(20)奖惩情况,不允许为 空备注text备注3.2系统的详细设计3.2.1实现模块之间的连接企业人事管理系统主要有部门表,人事管理表,奖惩表, 工资表组成,部门表带给用户的主要是用事务来实现人事的调 动,在调动的时候原来的部门调动后自动减1,调动到所在的 部门则会自动加1,人事管理表,主要是来实现查询用户的信 息的功能,奖惩表主要用来对该企业内的用户进行奖励和惩 罚,以备员工及时查询,实现查询功能,而工资表主要来实现 员工对自己工资的查询。以下是对各个部门表所连接起来的情 况,部门联系表,如图3-2所示:_ | r-X1U40Hi W IKC:' *«»瓶f t= dfi A» KiFr.Tirr b> -<1 Jte. Fir.«IF.11 :*» it. -3* 肖 号Cw【¥ K图3-2部门联系表人事管理模块:根据前面描述的需求分析,人事管理模块主要 是查询员工的基本信息,添加,删除,以及更新所有的员工信 息,所用到的是存储过程,和触发器等。3.3系统的查询功能在数据库发展过程中,数据查询曾经是一件非常困难的事 情,直到使用了 SQL语言后,数据查询才变得相当的简便。在 SQL server中,数据查询就是要用select语句实现对数据表中 数据进行查询,因此,在查询阶段select语句是最常用的。在 查询阶段的方法有很多,在此简单介绍了用T-SQL语句来查询 的方法。3.3.1查询全部员工的基本信息主要代码如下:use 企业人事管理select员工编号,员工姓名,员工所属部门编号,员工基本工资, 员工职位名称,员工电话,员工报到日期from dbo.基本信息表运行结果如图3-3所示:J普 j嘛员工孀员工tt.员询隹却门慎号扃工韦工8E员工职位名将 员工电话BXffiSJ日期100111500tB7B686888E300M1 El DD CCtDQDOa2oe-.1-2TH0王廿0378451233»Mn-09 00.iJ:iIi.C033CC321C0D主任0378542132CDM109 DD.EO:i:O.0O34mA1110D主任137232020312iTO01-1?DD.D:i:0.0035C(6率广iS32COO总薮建1S2.3B28102iTOfl1-17DDCC:iIi.ttB6ra.北:4濒芾好国T7即倒63trHHJllDDD:DQOQOOO7007硬选G10QO主任CGT7£22T句北2aag<iii3 oocctDQDoaaoce曾勇50HS111372321TO13MWl-1S00Qailjttl9eWiri1S232S2M12LOMl-20 00.KiIi.Ml10eno麒平5OT;TT139232020312OB<n-2D DD.DlUi.0O3仲查也巳成功掀IlgHJ ®.O KTU.3IWiiaiiniELfitar 眠3)至业事管理tn im anJO行二 1兀If图3-3员工基本信息表3.3.2详细查询员工信息主要代码如下:use 企业人事管理select 员工编号,员工姓名from dbo.基本信息表运行结果如图3-4所示:图3-4显示全体员工的编号以及员工的姓名3.3.3详细查询员工工资查询找出员工编号是001,002,003,006的员工姓名,员工编号,以及员工的基本工资。代码如下:use 企业人事管理select员工编号,员工姓名,员工基本工资from基本信息表where 员 工编号 in('001','002','003','006')运行结果如3-5图所示:里坚5I-S. H井食 1顾j跳颇2 Q耕俞1JJ3 UQ眄10<DCS方科3J日顼诚邢布L讪M.timi山瞄 倒 色町.相困L行f 11 Lfi Ci JL(陪图3-5查询001,002,003,006 的基本信息表3.3.4查询员工工资发放时间加班工资查询工资编号为001,005,009,0011,0013,003 的工资发放时间,加班工资,以及工资编号代码如下所示:use 企业人事管理select加班工资,工资发放时间,工资编号from 工资表where 工资编号 in('1','5','9','11','13','3')运行结果如3-6图所示:图3-6查询员工工资发放时间加班工资3.3.5查询全体员工的工资代码如下所示:use企业人事管理select*from dbo. 工资 表运行结果如图3-7所示:图3-7查询全体员工的工资3.4存储过程3.4.1存储过程的实现创建存储过程的方法有两种一种是在SQL server的管理平 台下创建,一种是用T-SQL语句来创建存储过程。在这里我们 只详细的描述一下用T-SQL语句来创建存储过程的方法。本例的题目是利用存储过程查询工资高低的前三名员工 的信息,以降序排列。代码如下:create proc cx_qsmasselect top 3 * from 基本信息表order by 员 工 基本 工 资 descgoexec cx_qsm.邪atKBansi?E硕1 :W5厂;3aid骥tEsrsii低 HUCK"roi1im茂斓川nntotuMj3 D122l-ICjceoi «(<»务顼孥瞄有张由 飘Ell概心皿Mm倒牲.霁3mn:n疝f lS至顼图3-8利用存储过程查询工资前三名的员工信息3.5事务的使用事务是指一个工作单元,这个单元可以包含多个步骤来完 成所需的任务,一个事务做为一个整体,要么成功,要么失败。 如果某一事务成功,则在事务中进行的所有数据更改均会提 交,成为数据库中永久的组成部分,如果事务遇到错误必须取 消或回滚,则所有数据的更改都的清除。事务主要用于多用户 同时操作的数据库系统。3.5.1事务修改信息本例主要是修改一个员工的信息,修改成功则提交,保存 到数据库中,如果失败,恢复原始数据,利用事务修改员工的 信息!实现代码如下:use 企业人事管理goprint '查询源信息'select * from 基本信息表where 员工编号='006'-查看原 信息gobegin transactiondeclare errorsum intset errorsum=0update 基本信息表set员工基本工资=员工基本工资-1000where 员 工编号='006'set errorsum=errorsum+errorif errorsum<>0beginprint'添加失败,回滚事务!rollback transactionendelsebeginprint '添加成功,提交事务,存入数据库!commit transactionendg。print'查看添加后,编号为员工的信息!select * from 基本信息表where 员 工编号='006'运行结果如图3-9所示:< 二寄i柚员得 ant.员iMSsg aism aiKssfe ai娜顾i刖1 >7-: -额 专上(WOOOOOant- §1«御嘲 films ai粮s& arsis 如撇刖1 沸 /:; -JMJ专邑 - -J戛ilEJ撤Wi(LieiI) m;i msg血比g 艮i UL净g® im.im.im 2|jS 35 引 Gh J115图3-9利用事务修改员工的信息3.5.2事务调动部门本例主要是利用事务对部门表进行人事调动的工作,在调 动后原部门会自动减1,新的部门会自动加1,实现此功能采用事务来实现,代码如下:use 企业人事管理print'查询原始信息select员工姓名,员工所属部门编号from 基本信息表where 员工编号=1select 部门编号,部门名称,部门人数from 部门表where部门编号in (1,3)g。begin transactiondeclare errorsum intset errorsum=0update 基本信息表set员工所属部门编号=3 where员工编号='001'set errorsum=errorsum+errorupdate 部门表set部门人数=部门人数+1 where 部门编号=03set errorsum=errorsum+errorupdate部门表set部门人数=部门人数-1 where 部门编号=01set errorsum=errorsum+errorif errorsum<>0beginprint '修改出错!事务回滚,恢复原始数据rollback transactionendelsebeginprint'修改成功!保存到数据库!commit transactioncommit transactionendgoprint'查看修改结果!select员工姓名,员工所属部门编号from 基本信息表 where 员 工编号='001'select部门名称,部门人数from 部门表where 部门编号in (1,3)运行结果如图3-10所示:TK - HP.SC - HH. VI ICC MM. XKAV. . .3*" KEmun虾耻宫器«J«CTSfl®l0i4 t BMM -Kr. ms taTart "n曲.雷n.,顷命条料廿WqLn EriUfll.E.L-»dirlvwlik.m SlfirraEriKr Qwm”凸本传息袁sei巾工坷骨仲DrME QKT-3rnbPiKr-3er-I:?H.-rDC站m.却门衰hu MTlA野番门部tlH号口Rmc tilirraEirKiHhimEam-Miic-rEc忸俄 mc SHAft 擎ILL裁r 岫ewt BHTarmBemcB-ffF-1?*<.tccl£ F<ccacm Qb*jin“qt 穆故出普i革骂目谁,' raJJlMift rramar lcrnMrd«JnI'oq ioPIIDVIS-I果存弟非精点IUWHLE UCMJMC.UE«mmMt: UMumiEfi希p南黑号株站车®iArE .1* L1=1 lESKr fllllW.zns fi a mi usng 而 eilut tei SU/iSff oe mot i II图3-10部门调动图3.6触发器的实现3.6.1删除触发器该触发器可实现,维护基本信息表和工资表之间的数据完 整型,减少数据冗余,当用户从中删除一位员工的信息时,该 触发器自动将该员工在工资表中的信息也随之删除。该触发器 的实现代码如下:create trigger tri_deleon dbo,基本信息表after deleteasbegindelete from 工资 表where 员 工 编 号 in (select 员 工 编 号 from deleted)update 部门表set部门人数=部门人数-1where部门编号in (select 员工所属部门编号fromdeleted)end3.6.2添加触发器该触发器可以实现,当用户向员工基本信息表中添加一条 信息的时,部门表中相应的部门总人数会触发加一。其功能实 现的代码如下:Create trigger tri_bmrson dbo,基本信息表after insertasupdate 部门表set部门人数=部门人数+1where 部门编号=(select 员工所属部门编号from inserted3.6.3提示触发器该触发器可以实现,当用户向员工信息表中插入信息时, 如果该信息信息中的部门编号在部门表中存在,则提示插入成 功,否则提示用户部门不存在,请重新输入。该触发器的实现 代码如下:Create trigger tri_hdxxon dbo,基本信息表after insertasif not exists(select 部 门编号from 部门表where 部 门编号 in (select 员 工所属部 门编号from inserted)beginrollback transactionprint('在部门表中不存在该部门号!请查找错误,并重新 输入!)endelsebeginprint'恭喜您输入成功!end3.7函数的使用根据员工号查询员工工资creaate function dbo.cx_gz(ygbh int)returns tableasreturn (select 员工编号,员工姓名,(datediff(month, 员 工 报 到日期,getdate()* 员工基本工资)员工应得工资from 基本 信息表where 员 工编号=ygbh)图3-11根据员工号查询员工工资结束语实践是检验真理的唯一标准,当然也是检验学习成 果的标准。在经过一周时间的数据库建设之后,才知道 我们需要了解,自己的所学的理论知识应该如何应用在 实践中,因为任何知识都源于实践,归于实践,所以要 将所学的知识在实践中来检验。实习期间,在李老师的指导下,和同学们的帮助下, 通过自身的不断努力,无论是理论学习上,还是动手实 践上,都取得了长足的发展和巨大的收获,实习之前觉 得这一周时间真的太短,也学不到什么实质性的东西。 但当我真正着手处理时,就不能有丝毫小瞧的意思了。 一切的一切都需要我们用心去领悟并结合所学知识去操 作。实践,是一面很亮的镜子,能够通过它看出我们自 身的缺点,能够通过它查找出自身缺乏的知识。通过这 次大型作业,我明显感觉到“书到用时方恨少”。在以后 的生活中我会不断地学习充实自己。致谢通过本次实训,我在李老师的认真指导下学到了很 多,让我受益匪浅,学到了在平时课堂上学不到的。本此课程设计,在李老师的指导下,我们小组成员 的共同努力下,我才完成了本次的数据库的设计工作, 在此要感谢李老师和我们小组的同学们。在本次的课程设计中我学到了很多东西,既巩固了 我的理论知识同时也培养了我们的团队意识,和团结合 作精神,培养了我们对事情研究分析的严谨态度和创新 精神,很大程度上提高了我分析问题,解决问题的能力, 这非常利于我现在和今后的学习和工作。这为今后进入 社会打好了良好的基础。在此我向我的指导老师,和小组的同学们致以真挚 的谢意,谢谢你们的大力支持和帮助。托尔2010-1-14参考文献【1】C.D.Date ,数据库系统导论,机械工业出版社,2000【2】林陈雷,郭安源,葛晓东,教育信息化系统开发实 例导航,人民邮电出版社,2003【3】 张立科,数据库开发技术与工程实践,人民邮 电出版社,2004【4】 张红军,王虹等,Visual basic 6.0 中文版高级 应用与开发指南,人民邮电出版社,2002【5】伍俊良主编等,VB课程设计与系统开发案例, 清华大学出版社,2002