具有二次开发平台的 S Q L server 数据库设计毕业论文.doc
1/37具有二次开发平台的具有二次开发平台的 S S QQ L L serverserver 数据库设数据库设计毕业论文计毕业论文目目录录第 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 语言介绍 72.1.3 系统开发的环境介绍 82/37第 3 章系统的详细设计 93.1 系统的总体设计 93.1.1 系统的模块框架结构 93.1.2 系统数据库的表结构 103.2 系统的详细设计 133.2.1 实现模块之间的连接 133.3 系统的查询功能 143.3.1 查询全部员工的基本信息 153.3.2 详细查询员工信息 163.3.3 详细查询员工工资 173.3.4 查询员工工资发放时间加班工资 183.3.5 查询全体员工的工资 193.4.1 存储过程的实现 203.5 事务的使用 213/373.5.1 事务修改信息 223.5.2 事务调动部门 243.6 触发器的实现 273.6.1 删除触发器 273.6.2 添加触发器 283.6.3 提示触发器 293.7 函数的使用 30结束语 31致谢 32参考文献 331/37第第 1 1 章章 实训目的与系统需求分析实训目的与系统需求分析1.11.1 实训目的实训目的1.1.11.1.1 知识目标知识目标通过 综合实训 进一步巩 固、深化 和扩展 学生的 SQL Server2005 数据库管 理和开发的基 本知识和技能。(1)熟练掌 握 SQL Server 2005 数据库的 操作(2)熟练掌 握 SQL Server 2005 表的操作(3)熟练掌 握 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 数2/37据库管理 和开发过程中 所遇到的实际 问题的能力、掌握基本 的SQL 脚本编写 规、养成良好 的数据库操作 习惯。(1)培养学 生通过各种 媒体搜集资 料、阅读资 料和利用资料的能力(2)培养学 生基本的数据 库应用能力(3)培养学 生基本的编程 逻辑思想(4)培养学 生通过各种媒 体进行自主学 习的能力1.1.31.1.3 素质目标素质目标培 养 学 生 理 论 联 系 实 际 的 工 作 作 风、严 肃 认 真 的 工 作 态 度以与独立 工作的能力。(1)培养学 生观察问题、思考问 题、分析问 题和解决问 题的综合能 力(2)培养学 生的团队协作 精神和创新精 神(3)培养学 生学习的主动 性和创造性1.21.2 需求分析需求分析企 业 人 事 管 理 系 统 的 主 要 目 的 就 是 利 用 软 件,替 代 原 始 的人工管理 模式,使企业走 向信息化,电子化,自动化管 理模式,3/37从而提 高企业的人事 管理效率。使企业 管理简单化,降低企 业的管理成 本。该 系 统 应 用 我 们 本 学 期 所 学 的 SQL server 2005 数 据库 技 术,主 要 实 现 企 业 人 事 信 息 的 基 本 录 入、修 改、查 询、删除 模块,员工 调动 信息 的录入、修 改、查询、删除模块,为企业人事 管理提供信息 咨询,信息检 索,信息存取 等服务,基本上能 够满足现代企 业对人事管理 的需要。1.2.11.2.1 功能分析功能分析主要分为 一下模块:人事管理 模块:该模块 有可分为档案 管理和奖惩管 理。该 模 块 要 实 现 的 功 能 是 让 系 统 管 理 员 实 现 员 工 基 本 信息的录入 工作。并存放 在数据库。调动管理 模块:该模块 有可分为员工 调动和员工退 休。该功能主 要是实现企业 各部门的人员 调动功能,能够自动的维护 系统的完整型。再次功能 中主要运用本 学期我们所学的触发器事务等一些高 级数据库编程 技术。4/37工资管理 模块:该模块可 以分为计件工 资和加班提成 工资。在该模块 中本企业的员 工可以查询该 员工在本月中所做的工 作以与工资。考勤管 理模块:该模块 可以分为请假 登记,主要实 现的功能是 与时的记录该 企业员工的 病假、事假、以与请 假天数。1.2.21.2.2 系统特征系统特征1全面完 整性系统是 用户日常工作 的信息化管 理平台。可减少 大量的重复录入工作。2易用性界面友好 简洁。3灵活性独有 二次开 发平台功能,可方便 地由用户自 由进行数据 和界面更改,使软件完全 贴切于用户的 需要。强大的 查询功能,可灵活设 置任意多条件 进行组合查询。4开放性5/37提供功 能强大的 数据接口,可方便 的引入各 类 Office 文档,并增加了 文档的安全性。5强大的 报表/图表输出 功能提供强 大的报表制作 与管理工具,用户可 直接设计各种 所需报表。提 供了灵活报表 生成器,并随 时进行设计更 改。6安全性一流的数 据库加密技术。1.2.31.2.3 数据流程数据流程存储员工信息数据流图员工信息密码登录主 界面查询录入数据库6/37基本信息详细信息部门信息存储第第 2 2 章章 系统开发工具与环境系统开发工具与环境2.12.1 系统开发工具介绍系统开发工具介绍2.1.12.1.1 SQLserverSQLserver 20052005 简介简介SQL Server2005是 一 个 全 面 的、集 成 的、端 到 端 的 数 据解决方 案,它为企 业中的用户提 供了一个安 全、可靠和 高效的平台 用于企业 数据管 理和商业 智能应 用。SQL Server 2005为IT 专家和 信息工作者带 来了强大的、熟悉的 工具,同时减 少了在从移 动设备到企业 数据系统的 多平台上创建、部署、管理与使用企业 数据和分析应 用程序的复杂 度。通过全面 的功能集、和现有 系统的集 成性、以与对 日常任务 的自动化管 理能力,SQLServer 2005为 不 同 规 模 的 企 业 提 供 了 一 个 完 整 的 数 据 解 决调动删除7/37方案。2.1.22.1.2 T-SQLT-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 的命令 可分成数据 定义语言与 数据操作语 言,数据定8/37义语言 可用来建立 新的数据库、数据表、字段与 索引等,本教程不予介 绍;另一为数 据操作语言,可用来建 立查询表、排序、筛选数 据、修改、增删等 动作。数据定 义语言命令 常用的有选择、添加、删除和修改 这四种。2.1.32.1.3 系统开发的环境介绍系统开发的环境介绍Windows XP 可 以作 为运 行 SQL Sserver2005 最 理想 的系统 平 台,开 发 软 件 就 是 用 现 学 的 Microsoft Sserver2005 SQLManagement Studio,它 包 括 SQL Sserver2000 企 业 管 理 器(Enterprise Manager)和 查询 分 析 器(QueryAnalyzer),等方面 的功能,给用 户带来 了很大 的方便。此外 SQL Sserver2005管理 平台 还提供 了一 种环境,用于 管理 Analysis Services(分析服 务)、Integration Services(集 成 服 务)、Reporting Services(报 名服 务)和 Xquery。SQL Sserver2005 管理 平台 为我们 这样的开发 者提供一个熟 悉的环境。此外本次 开发环境的硬 件配置也不需 要很高,并且学校 提供的机房 上机环境完全 可以满足我们 的硬件要求。9/37第第 3 3 章章 系统的详细设计系统的详细设计3.13.1 系统的总体设计系统的总体设计3.1.13.1.1 系统的模块框架结构系统的模块框架结构保存用户对数据库所作的操作,并且写入日志表中退出系统数据查询基本信息模块部门信息模块工资查询模块登陆系统人事管理系统部门调动模块奖惩管理模块数据增加数据删除数据修改数据统计考勤管理账号信息模块基本信息录入账号管理数据录入10/37图 3-1 系 统 的 模 块 框 架 结 构 图3.1.23.1.2 系统数据库的表结构系统数据库的表结构员工基本信息表(表 3-1)表名:员工基本信息表字段数据类型备注员工编号Varchar(50)主键,允许为空11/37员工Nvarchar(50)员工,不允许为空员工所属部门编号Int员工部门编号,不允许为空员工基本工资int员工工资,不允许为空员工职位名称Nvarchar(50)员工职位,不允许为空员工Nvarchar(50)员工,不允许为空员工报到日期datetime员工报到日期,不允许为空部门表(表 3-2)表名:部门表字段数据类型备注部门编号Char(2)部门编号,不允许为空部门名称Char(10)主键,允许为空部门描述Char(50)部门描述,不允许为空部门经理编号Char(10)部门经理编号,不允许为空员工Nchar(10)员工,不允许为空工资表(表 3-3)12/37表名:工资表字段数据类型备注工资编号Char(8)主键,允许为空员工编号Char(10)员工编号,不允许为空工资发放时间datetime工资发放时间,不允许为空员工基本工资Int员工基本工资,不允许为空加班工资Int加班工资,不允许为空缺薪扣除Int缺勤扣除,不允许为空其他工资int其他工资,不允许为空奖惩表(表 3-4)表名:奖惩表字段数据类型备注奖惩编号bigint主键,允许为空员工Varchar(50)员工,不允许为空13/37奖惩日期datetime奖惩日期,不允许为空奖惩类型Varchar(4)奖惩类型,不允许为空奖惩情况Varchar(20)奖惩情况,不允许为空备注text备注3.23.2 系统的详细设计系统的详细设计3.2.13.2.1 实现模块之间的连接实现模块之间的连接企业人事 管理系统主要 有部门表,人 事管理表,奖 惩表,工资表组 成,部门表带 给用户的主要 是用事务来实 现人事的调动,在 调 动 的 时 候 原 来 的 部 门 调 动 后 自 动 减 1,调 动 到 所 在 的部 门 则 会 自 动 加 1,人 事 管 理 表,主 要 是 来 实 现 查 询 用 户 的 信息的功能,奖惩表主要 用来对该企业 的用户进行奖 励和惩罚,以备员 工与时查询,实现查 询功能,而工资 表主要来实现 员工14/37对自己工 资的查询。以 下是对各个部 门表所连接起 来的情况,部门联系 表,如图 3-2 所示:图 3-2 部门联系表人事管 理模块:根据前 面描述的需求 分析,人事管 理模块主要是查询 员工的基本 信息,添加,删除,以与更 新所有的员 工信息,所用 到的是存储过 程,和触发器 等。3.33.3 系统的查询功能系统的查询功能在数据库 发展过程中,数据查询 曾经是一件非 常困难的事情,直到使 用了 SQL 语言后,数据查 询才变得 相当的简 便。在SQL server 中,数据 查询 就是要 用 select 语句 实现 对数据 表中数据 进行查询,因此,在查 询阶段 select 语句 是最常用 的。在15/37查询阶 段的方法 有很多,在此简 单介绍了 用 T-SQL 语句来 查询的方法。3.3.13.3.1 查询全部员工的基本信息查询全部员工的基本信息主要代码 如下:use 企业人事 管理select员工编号,员工,员工所属 部门编号,员工基本 工资,员工职位名称,员工,员工报到 日期from dbo.基本信息 表运行结果 如图 3-3 所示:16/37图 3-3 员工基本信息表3.3.23.3.2 详细查询员工信息详细查询员工信息主要代码 如下:use 企业人事 管理select员工编号,员工from dbo.基本信息 表运行结果 如图 3-4 所示:17/37图 3-4 显 示 全 体 员 工 的 编 号 以 与 员 工 的3.3.33.3.3 详细查询员工工资详细查询员工工资查询 找出员工 编号是 001,002,003,006 的员 工,员工编号,以 与员工的基本 工资。代码如下:use 企业人事 管理select员工编号,员工,员工基本 工资from基本信息 表where员工编号 in(001,002,003,006)运行结果 如 3-5 图所示:18/37图 3-5 查 询 001,002,003,006 的 基 本 信 息 表3.3.43.3.4 查询员工工资发放时间加班工资查询员工工资发放时间加班工资查询 工资编号 为 001,005,009,0011,0013,003 的工资发放时 间,加班工资,以与工资编 号代码如下 所示:use 企业人事 管理select加班工资,工资发放 时间,工资编号from工资表where工资编号 in(1,5,9,11,13,3)运行结果 如 3-6 图所示:19/37图 3-6 查 询 员 工 工 资 发 放 时 间 加 班 工 资3.3.53.3.5 查询全体员工的工资查询全体员工的工资代码如下 所示:use 企业人事 管理select*from dbo.工资表运行结果 如图3-7所示:20/37图 3-7查 询 全 体 员 工 的 工 资3.43.4 存储过程存储过程3.4.13.4.1 存储过程的实现存储过程的实现创 建 存 储 过 程 的 方 法 有 两 种 一 种 是 在 SQL server 的 管 理平台下 创建,一种是 用 T-SQL 语句来 创建存储 过程。在这里 我们只详细 的描述一下用 T-SQL 语句来创 建存储过程的 方法。本 例 的 题 目 是 利 用 存 储 过 程 查 询 工 资 高 低 的 前 三 名 员 工的信息,以降序排列。代码如下:create proccx_qsmas21/37select top 3*from基本信息 表orderby员工基本 工资descgoexeccx_qsm图 3-8 利用存储过程查询工资前三名的员工信息3.53.5 事务的使用事务的使用事务是指 一个工作单元,这个单元 可以包含多个 步骤来完成所需的 任务,一个事务 做为一个整体,要么成功,要么失败。如 果 某 一 事 务 成 功,则 在 事 务 中 进 行 的 所 有 数 据 更 改 均 会 提22/37交,成为数 据库中永久的 组成部分,如果事 务遇到错误必 须取消或回 滚,则所有 数据的更改都 的清除。事务主 要用于多用户同时操作 的数据库系统。3.5.13.5.1 事务修改信息事务修改信息本例主要 是修改一个员 工的信息,修改成功 则提交,保存到数据库 中,如果失败,恢复原始 数据,利用事务 修改员工的信息!实 现代码如下:use 企业人事 管理goprint 查询源信 息select*from基本信息 表where员工编号=006-查看原信息gobegin transactiondeclare errorsum intset errorsum=0update基本信息 表set员工基本 工资=员工基本 工资-100023/37where员工编号=006set errorsum=errorsum+errorif errorsum0beginprint添加失败,回滚事务!rollback transactionendelsebeginprint 添加成功,提交事务,存入数据库!commit transactionendgoprint查看添加 后,编号为员 工的信息!select*from基本信息 表where员工编号=006运行结果 如图3-9所示:24/37图 3-9 利用事务修改员工的信息3.5.23.5.2 事务调动部门事务调动部门本例主要 是利用事务对 部门表进行人 事调动的工作,在调动后原部 门会自动减1,新的部门 会自动加1,实现此功能采用事务来实 现,代码如下:use 企业人事 管理print查询原始 信息select员工,员工所属 部门编号from基本信息 表where员工编号=1select部门编号,部门名称,部门人数 from部门表where部门编号in(1,3)go25/37begin transactiondeclare errorsum intset errorsum=0update基本信息 表set员工所属 部门编号=3where员工编号=001set errorsum=errorsum+errorupdate部门表 set部门人数=部门人数+1 where部门编号=03set errorsum=errorsum+errorupdate部门表 set部门人数=部门人数-1 where部门编号=01set errorsum=errorsum+errorif errorsum0beginprint修改出错!事务回滚,恢复原始数据 rollback transactionendelse26/37beginprint修改成功!保存到数据 库!commit transactioncommit transactionendgoprint查看修改 结果!select员工,员工所属 部门编号 from基本信息 表where员工编号=001select部门名称,部门人数 from部门表 where部门编号in(1,3)运行结果 如图 3-10 所示:27/37图 3-10部 门 调 动 图3.63.6 触发器的实现触发器的实现3.6.13.6.1 删除触发器删除触发器该触发器 可实现,维护基本 信息表和工资 表之间的数据 完整型,减少数 据冗余,当用户 从中删除一 位员工的信 息时,该触发器自 动将该员工在 工资表中的信 息也随之删除。该触发器的实现代 码如下:create trigger tri_deleon dbo.基本信息 表after delete28/37asbegindeletefrom工资表where员工编号in(select员工编号 from deleted)update部门表set部门人数=部门人数-1where部门编号in(select员工所属 部门编号 fromdeleted)end3.6.23.6.2添加触 发器添加触 发器该触发器 可以实现,当用户向 员工基本信息 表中添加一条信息的 时,部门表 中相应的部门 总人数会触 发加一。其功能 实现的代码 如下:Create trigger tri_bmrson dbo.基本信息 表after insertasupdate部门表29/37set部门人数=部门人数+1where 部门编号=(select 员工所属部门编号 frominserted3.6.33.6.3 提示触发器提示触发器该触发器 可以实现,当 用户向员工信 息表中插入信 息时,如果该信 息信息中的部 门编号在部门 表中存在,则提示插 入成功,否则提 示用户部门 不存在,请重新 输入。该触发 器的实现代码如下:Create trigger tri_hdxxon dbo.基本信息 表after insertasif not exists(select部门编号 from部门表where部门编号in(select员工所属 部门编号from inserted)beginrollback transactionprint(在部门表 中不存在该部 门号!请查找 错误,并重新输入!)30/37endelsebeginprint恭喜您输 入成功!end3.73.7 函数的使用函数的使用根据员工 号查询员工工 资creaate function dbo.cx_gz(ygbh int)returns tableasreturn(select员工编号,员工,(datediff(month,员工报到日期,getdate()*员工基本 工资)员工应得 工资from基本信息表where员工编号=ygbh)31/37图 3-11根 据 员 工 号 查 询 员 工 工 资结结 束束 语语实践是检验真理的唯一标准,当然也是检验学习成果的标准。在经过一周时间的数据库建设之后,才知道我们需要了解,自己的所学的理论知识应该如何应用在实践中,因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。实习期间,在老师的指导下,和同学们的帮助下,通过自身的不断努力,无论是理论学习上,还是动手实践上,都取得了长足的发展和巨大的收获,实习之前觉得这一周时间真的太短,也学不到什么实质性的东西。32/37但当我真正着手处理时,就不能有丝毫小瞧的意思了。一切的一切都需要我们用心去领悟并结合所学知识去操作。实践,是一面很亮的镜子,能够通过它看出我们自身的缺点,能够通过它查找出自身缺乏的知识。通过这次大型作业,我明显感觉到“书到用时方恨少”。在以后的生活中我会不断地学习充实自己。致致谢谢通过本次实训,我在老师的认真指导下学到了很多,让我受益匪浅,学到了在平时课堂上学不到的。本此课程设计,在老师的指导下,我们小组成员的共同努力下,我才完成了本次的数据库的设计工作,在此要感谢老师和我们小组的同学们。在本次的课程设计中我学到了很多东西,既巩固了我的理论知识同时也培养了我们的团队意识,和团结合作精神,培养了我们对事情研究分析的严谨态度和创新精神,很大程度上提高了我分析问题,解决问题的能力,33/37这非常利于我现在和今后的学习和工作。这为今后进入社会打好了良好的基础。在此我向我的指导老师,和小组的同学们致以真挚的谢意,谢谢你们的大力支持和帮助。托尔2010-1-14参考文献参考文献【1 1】C.D.Date,数据库系统导论,机械工业,2000【2 2】林雷,郭安源,葛晓东,教育信息化系统开发实例导航,人民邮电,2003【3 3】立科,数据库开发技术与工程实践,人民邮电,2004【4 4】红军,王虹 等,Visual basic 6.0 中文版高级应用与开发指南,人民邮电,2002【5 5】伍俊良 主编 等,VB 课程设计与系统开发案例,清华大学,200234/37