1、数据库原理与应用课程设计设计题目 人事管理系统 前言 数据库技术是计算机科学技术发展最快,应用最为广泛的技术之一。其在计算机设计,人工智能,电子商务,企业管理,科学计算等诸多领域均得到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。 随着信息技术的飞速发展,信息化的大环境给各成人高校提出了实现校际互联,国际互联,实现静态资源共享,动态信息发布的要求; 信息化对学生个人提出了驾驭和掌握最新信息技术的素质要求;信息技术提供了对人事进行重大革新的新手段;信息化也为提高人事质量,提高管理水平,工作效率创造了有效途径. 校园网信息系统建设的重要性越来越为成人高校所重视. 利用计算机支持人
2、事高效率,完成人事管理的日常事务,是适应现代人事制度要求、推动人事管理走向科学化、规范化的必要条件;而人事管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,不允许出错,如果实行手工操作,每月须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行人事管理工作,不仅能够保证各项准确无误、快速输出,而且还可以利用计算机对有关人事的各种信息进行统计,同时计算机具有手工管理所无法比拟的优点. 例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高员工工资管理的效率,也是人事的科学化、正规化管理,与世界接轨的件。 在软件开发的
3、过程中,随着面向对象程序设计和数据库系统的成熟,数计成为软件开发的核心,程序的设计要服从数据,因此人事管理系统的数据库设计尤其重要。本文主要介绍人事管理系统的数据库方面的设计,从需求分析到数据库的运行与维护都进行详细的叙述。本文的分为5 章:第1章主要是课题简介及设计的内容与目的。第2章是需求分析,此阶段是数据库设计的起点。第3章是概念设计,它是将需求分析的用户需求抽象为信息结构。第4章是逻辑结构设计,它将概念模型转换为某个DBMS 所支持的数据模型。第5章是数据库的实施与运行,它包括数据的载入及数据库的运行。关键词:SQL 语言;数据库设计;人事管理系统目录第一部分:课程设计内容2第一章 绪
4、论41课题简介42设计目的43设计内容4第二章 需求分析51需求分析的任务52需求分析的过程53数据字典5第三章 概念结构设计71概念结构设计的方法与步骤72概念结构设计的方法72.1概念结构设计的步骤72.2数据抽象与局部视图设计8第四章 逻辑结构设计91E-R图向关系模型的转换102数据模型的优化103数据库的结构10第五章 物理设计阶段111数据存储方面112系统功能模块123物理设计阶段结果124数据库实施阶段124.1数据库实施阶段目标154.2数据库实施阶段任务154.3建立视图155存储过程定义15第六章 数据库的实施与运行171建立数据库(教学管理系统数据库)2基于数据表的数据
5、查询(系表查询)3基于视图的数据查询(系表视图查询)4存储过程功能的验证(存储过程比较查询第七章 用户登入界面设计. 20总结24参考文献26第一章绪论一、课题简介人事管理系统是一个典型的信息管理系统(MIS),随着社会经济与科技的发展,人们更多的利用科技来管理日常生活和工作事务。为了适应这一发展趋势,数据库管理信息系统的发展也异常迅速。人们也开始越来越多地利用计算机解决实际问题。员工信息管理是企业信息管理的重要部分,面对大量的人事信息,采用人力处理即浪费时间,需要设计管理系统来改变现状。 经过三年的学习,我们对计算机方面的知识有了很大的提升,本着理论联系实际的宗旨,通过学校提供的这次软件技术
6、实践的机会,在指导教师的帮助下,历经两周时间,我自行设计一套人事管理系统,在下面的各章中,我将以这套人事管理信息系统为例,谈谈其开发过程和所涉及到的问题。二、设计目的 应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。 数据库应用 课程实践:实践和巩固在课堂人事中学习有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。 数据库原理 软件设计实践:实践和巩固在课堂人事中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分
7、析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。三、设计的意义随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。当今社会已步入了信息社会,知识经济将成为新世纪的主导产业。伴随计算机的逐步推广和使用,计算机已在科研、生产、商业、服务等许多方面创造了提高效率的途径,与此同时,单位技术成本也逐年有了明显的下降,然而办公室里的人事费用却不断增加。在国外,花费在专业、管理和行政人员上的成本占了办公室总成本的2/34/5,这一现象使人们对办公室自动化的要求与日俱增。我们必须在进行机构改革的同时,尽快使用现代化管理设备、管理手段、管理方法
8、。 计算机在人事部门的广泛使用,改进了统计手段,改革了统计方法,提高了统计工计算机在人事部门的广泛应用,将为我国的人事管理工作,提供现代化的管理手段和科学的管理方法,并将为开创人事管理工作的新局面创造条件。 当前随着高校人事管理自主权的逐步落实,人事管理工作都面临从被动执行层面的事务性工作向主动开发学校人才资源,实现人力资源增值的开拓性、战略性工作转变的压力。大多事务性工作尽管是基于经验的重复劳动,琐碎烦杂,缺乏创造性,占用了管理人员大量的时间,但又是不可回避的基本事务,通过增加人事工作人员来解决人事工作压力已不现实,目前我们只能借助于计算机、借助于人事信息管理系统来进行工作模式和方法的创新来
9、解决这一问题第二章 需求分析一、需求分析的任务需求分析的任务是调查应用领域,对应用领域中的信息要求和操作要求进行详细分析,形成需求分析说明书。重点是调查,收集与分析用户在数据管理中的信息要求,处理要求,数据的安全性与完整性要求。为了完成需求分析的任务,要详细调查待开发的数据库应用部门的情况,了解原系统工作概况,分析用户的各种需求,在此基础上确定新系统的功能。新系统必须考虑今后的扩充和改变,不能仅仅按当前应用需求来设计数据库。二、需求分析的过程 调查企业组织概况,了解企业人事管理所需要的步骤,对管理的个步骤进行分析,了解管理中所需要信息的具体内容,还有人事管理系统所需要处理的内容。三、数据字典(
10、一)、系统需求一个正常运作的公司必定有一个健全的人事管理系统,来管理员工的信息,包括员工的编号、姓名、性别、工龄、工资以及奖惩情况。除了这些基本的用处外,此系统还提供员工信息更改或删除等的功能,使公司的人事管理方便快捷而又清晰。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效地程序结构支持各种数据操作的执行。(二)、用户需求 通过对现行人事管理系统的调查,明确了人事管理系统由档案管理、职务调动管理、奖惩管理、工资管理、岗位管理组成。 系统功能的主要描述如下。(1)员工档案管理1)对公司里所有员工进行统一编号;将每一位员工的信息保存在员工档案记录中。2)对新聘用的员工,将其信息
11、加入到员工档案记录中;对于解聘的员工,将其信息从员工档案记录中删除。3)当员工的信息发生变动时,修改员工档案记录中相应的属性。(2)员工职务调动管理对公司里所有员工的职务记录进行统一编号;登记员工调动前后的具体职务,以及调动时间。(3)奖惩管理对公司里所有员工的奖惩记录进行统一编号;登记员工奖惩的原因,所受奖惩类型,奖惩时间。(4)岗位管理对公司所有的岗位进行编号,建立岗位记录。(5)工资管理对公司里所有员工的工资记录进行统一编号,建立工资记录表。(6)部门管理对公司所有的部门进行编号,建立部门记录。(三)、数据流图 员工档案档案管 理员工工资查询发工资工资管 理 工资记录员工员工情况上级员工
12、奖惩管 理 奖惩记录员工调动管 理 职务调动记录上级奖惩调动部门情况部门管 理 部门记录上级岗位管 理 岗位记录经分析本系统要用到8个基本表:员工基本信息表、员工婚姻状况表、员工学历状况表、员工职务调动表、员工奖惩管理表、员工工资表、企业工作岗位表、企业部门信息表。(四)、数据结构定义 员工基本信息表:员工号 姓名 年龄 性别 籍贯 身份证号 电话 职务 岗位号 员工婚姻状况表:员工号 婚姻状况 配偶姓名 配偶年龄 员工学历状况表:员工号 学历 专业 毕业时间 学校 外语情况 员工职务调动表:员工号 原职务 现职务 调动时间 员工奖惩管理表:员工号 编号 金额 内容 员工工资表:员工号 工资
13、工龄 企业工作岗位表:岗位号 名称 数量 所属部门号 企业部门信息表:部门号 名称 人数 部门经理第三章 概念结构设计一、概念结构设计的方法与步骤(一)、概念结构设计的方法 设计概念结构通常有四类方法:自顶向下,自底向上,逐渐扩张以及混合策略。本人事系统采用的是自底向上的方法。即首先定义全局的概念结构的框架,然后逐步细化。根据自顶向上地进行需求分析然后再自底上上地进行概念设计。(二)、概念结构设计的步骤 概念结构的设计可分为两步:第一步是抽象数据并设计局部视图。第二步是集成局部视图,得到全局的概念结构。二、人事管理系统E-R图职工管理员工资奖惩学历岗位填写查看修改查看修改查看修改查看所属查看查
14、看修改员工号金额编号电话性别身份证好号职务账号毕业学校专业学历内容毕业学校密码工资名称岗位号姓名学校婚姻表婚姻状况配偶姓名配偶年龄数量所属部门部门号名称vheng人数部门经理查看修改职务调动员工号原职务现职务调动时间工龄第四章 逻辑结构设计一、E-R图向关系模型转换员工基本信息表 (员工号 姓名 年龄 性别 籍贯 身份证号 电话 职务 岗位号)员工婚姻状况表 (员工号 婚姻状况 配偶姓名 配偶年龄)员工学历状况表 (员工号 学历 专业 毕业时间 学校 外语情况)员工职务调动表 (员工号 原职务 现职务 调动时间) 员工奖惩管理表 (员工号 编号 金额 内容) 员工工资表 (员工号 工资 工龄)
15、 企业工作岗位表 (岗位号 名称 数量 所属部门号)企业部门信息表 (部门号 名称 人数 部门经理)二、数据模型的优化数据库德逻辑结构设计的结果不是唯一的。为了提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整关系模式,这就是数据模型的优化。规范化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可用来预测模式可能出现的问题,使数据库设计工作有了严格的理论基础。关系数据模型的优化通常以规范化理论为指导,方法为:(1)确定数据依赖。分别写出每个关系内部属性的以及不同关系模式属性间的数据依赖。根据需求分析可知:员工基本信息表的数据依赖 (员工号-姓名 员工号-年龄 员工号-性别员工号
16、-籍贯 员工号-身份证号 员工号-电话 员工号-职务 员工号-岗位号)员工婚姻状况表的数据依赖 (员工号-婚姻状况 员工号-配偶姓名 员工号-配偶年龄)员工学历状况表的数据依赖 (员工号-学历 员工号-专业 员工号-毕业时间 员工号-学校 员工号-外语情况)员工职务调动表的数据依赖 (员工号-原职务 员工号-现职务 员工号-调动时间) 员工奖惩管理表的数据依赖 (员工号-编号 员工号-金额 员工号-内容) 员工工资表的数据依赖 (员工号-工资员 工号-工龄) 企业工作岗位表的数据依赖 (岗位号-名称 岗位号-数量 岗位号-所属部门号)企业部门信息表的数据依赖 (部门号-名称 部门号-人数 部门
17、号-部门经理)(2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。(3)按照数据依赖的理论对关系模式逐一分析,考察是否存在部分函数依赖,传递函数依赖,根据各个函数依赖的依赖集可知各个关系模式没有部分函数依赖和传递函数依赖所以所有的关系模式都是属于3NF。不需要进一步,进行模式分三、数据库的结构 给出数据库基本表结构员工基本信息表字段名数据类型长度约束员工号char20主键姓名char20不为空性别char2不为空籍贯char20不为空年龄Smallint5不为空身份证号char20不为空电话char20不为空职务char20不为空岗位号char20外键员工婚姻状况表字段名数据类
18、型长度约束员工号char20主键婚姻状况char20不为空配偶姓名char20不为空配偶年龄Smallint5不为空员工学历状况表字段名数据类型长度约束员工号char20主键学历char20不为空专业char20不为空毕业时间char20不为空学校char20不为空外语情况char20不为空员工职务调动表字段名数据类型长度约束员工号char20主键原职务char20不为空现职务char20不为空调动时间char20不为空员工奖惩管理表字段名数据类型长度约束员工号char20主键编号char20不为空金额char20不为空内容char50不为空员工工资表字段名数据类型长度约束员工号char20主
19、键工资char20不为空工龄Smallint5不为空企业工作岗位表字段名数据类型长度约束岗位号char20主键名称char20不为空数量char20不为空所属部门号char20外键企业部门信息表字段名数据类型长度约束部门号char20主键名称char20不为空人数char20不为空部门经理char20不为空第五章物理设计阶段一、数据存储方面(1)员工基本信息表信息查询和更新模块将实现对员工信息的查询和更新(修改、插入、删除)操作,方便于对系部基本信息的集中管理 (2)员工婚姻状况表的查询和更新模块 将完成员工婚姻信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理(3)员工学历状
20、况表的查询和更新模块 将完成员工学历状况的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理(4)员工职务调动表的查询和更新模块 将完成员工职务调动的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理(5)员工奖惩管理表的查询和更新模块 将完成对员工奖惩管理的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理(6)员工工资表的查询和更新模块 将完成员工工资的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理(7)企业工作岗位表的查询和更新模块 将完成企业工作岗位的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理(8)企业部门信息表的查询和更新
21、模块将完成企业部门信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理。三、物理设计阶段结果 编号存储过程作用1 员工基本信息表_insert在系表中插入一元组2员工婚姻状况表_insert在班级中插入一元组3员工学历状况表_insert在学生中插入一元组4员工职务调动表_insert在员工职务调动表中插入一元组5员工奖惩管理表_insert在员工奖惩管理表中插入一元组6员工工资表_insert在员工工资表中插入一元组7企业工作岗位表_insert在企业工作岗位表中插入一元组8企业部门信息表_insert在企业部门信息表中插入一元组四、数据库实施阶段(一)、数据库实施阶段目标用D
22、BMS所提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果描述出来,成为DBMS可以接受的源代码,在经过调试生成目标模式。(二)、数据库实施阶段任务 (1)、建立数据库Create database person (2)、建立数据表1)、员工基本信息表的建立create table 员工基本信息表(员工号 char(20) primary key not null, 姓名 char(20) not null,性别 char(2) check(性别 in(男,女),籍贯 char(20) not null,年龄 Smallint Default 20,身份证号 char(20) no
23、t null,电话 char(20)not null,职务 char(20) not null,岗位号 char(20) not null)2)、员工婚姻状况表的建立create table 员工婚姻状况表(员工号 char(20) primary key not null, 婚姻状况 char(20) not null,配偶姓名 char(20) not null,配偶年龄 Smallint Default 20)3)、员工学历状况表的建立create table 员工学历状况表(员工号 char(20) primary key not null,学历 char(20) not null,专
24、业 char(20) not null,毕业时间 char(20) not null,学校 char(20)not null,外语情况 char(20) not null)4)、员工职务调动表的建立create table 员工职务调动表(员工号 char(20) primary key not null,原职务 char(20) not null,现职务 char(20) not null,调动时间 char(20) not null)5)、员工奖惩管理表的建立create table 员工奖惩管理表(员工号 char(20) primary key not null,编号 char(20)
25、 not null,金额 char(20) not null,内容 char(50) not null)6)、员工工资表的建立create table 员工工资表(员工号 char(20) primary key not null,工资 char(20) not null,工龄 Smallint not null)7)、企业工作岗位表的建立create table 企业工作岗位表(岗位号 char(20) primary key not null,名称 char(20) not null,数量 char(20) not null,所属部门号 char(20) not null)8)、企业部门信
26、息表的建立create table 企业部门信息表(部门号 char(20) primary key not null,名称 char(20) not null,人数 char(20) not null,部门经理 char(20) not null)(三)、建立视图(1) 查询员工基本信息表的基本信息的视图定义如下:create view 员工基本信息表_viewasselect *from 员工基本信息表with check option (2) 查询员工婚姻状况表的基本信息的视图定义如下: create view 员工婚姻状况表_view as select * from 员工婚姻状况表
27、with check option (3) 查询员工学历状况表的基本信息的视图定义如下: create view 员工学历状况表_view as select * from 员工学历状况表 with check option(4) 查询员工职务调动表的基本信息的视图定义如下: create view 员工职务调动表_view as select * from 员工职务调动表 with check option (5) 查询员工奖惩管理表的基本信息的视图定义如下:create view 员工奖惩管理表_viewasselect *from 员工奖惩管理表with check option (6)
28、 查询员工工资表的基本信息的视图定义如下:create view 员工工资表_viewas select *from 员工工资表with check option(7) 查询企业工作岗位表的基本信息的视图定义如下:create view 企业工作岗位表_viewasselect *from 企业工作岗位表with check option(8) 查询企业部门信息表的基本信息的视图定义如下: create view 企业部门信息表_view as select * from 企业部门信息表 with check option五、存储过程定义 (1)、create procedure 员工基本信息
29、表_insert 员工号char(20), 姓名char(20), 性别char(2), 籍贯char(20), 年龄Smallint, 身份证号char(20), 电话char(20),职务char(20),岗位号char(20) AsInsert into 员工基本信息表values(员工号, 姓名, 性别, 籍贯, 年龄, 身份证号, 电话, 职务, 岗位号)(2)、create procedure员工婚姻状况表_insert 员工号char(20), 婚姻状况char(20), 配偶姓名char(20), 配偶年龄Smallint AsInsert into 员工婚姻状况表values
30、(员工号, 婚姻状况, 配偶姓名, 配偶年龄)(3)、create procedure员工学历状况表_insert 员工号char(20), 学历char(20), 专业char(2), 毕业时间char(20), 学校 char(20), 外语情况char(20) AsInsert into 员工学历状况表values(员工号, 学历, 专业, 毕业时间, 学校, 外语情况)(4)、create procedure员工职务调动表_insert 员工号char(20), 原职务char(20), 现职务char(2), 调动时间char(20), AsInsert into 员工职务调动表va
31、lues(员工号, 原职务, 现职务, 调动时间)(5)、create procedure员工奖惩管理表_insert 员工号char(20), 编号char(20), 金额char(2), 内容char(50) AsInsert into员工奖惩管理表values(员工号, 编号, 金额, 内容)(6)、create procedure员工工资表_insert 员工号char(20), 工资char(20), 工龄Smallint AsInsert into员工工资表values(员工号, 工资, 工龄)(7)、create procedure企业工作岗位表_insert 岗位号char(2
32、0), 名称char(20), 数量char(20), 所属部门号char(20) AsInsert into企业工作岗位表values(岗位号, 名称, 数量, 所属部门号)(8)、create procedure企业部门信息表_insert 部门号char(20), 名称char(20), 人数char(20), 部门经理char(20) AsInsert into企业部门信息表values(部门号, 名称, 人数, 部门经理)第六章 数据库的实施与运行 一、建立数据库二、基于数据表的数据查询员工基本信息表员工婚姻状况表员工学历状况表员工职务调动表员工奖惩管理表员工工资表企业工作岗位表企业
33、部门信息表三、基于视图的查询员工基本信息表员工婚姻状况表员工学历状况表员工奖惩管理表第七章 用户登录界面设计一、java编译代码的创建import java.sql.*;public class GetConn Connection con; / 声明Connection对象/* * 与数据库建立连接方法 * * return Connection对象 */public Connection getConnection() / 建立返回值为Connection的方法try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);S
34、ystem.out.println(数据库驱动加载成功);String url = jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=person;String userName = sa;String passWord = sa;con = DriverManager.getConnection(url, userName , passWord);if (con != null) System.out.println(数据库连接成功); catch (Exception e) e.printStackTrace();return co
35、n; / 按方法要求返回个Connection对象/* * param args * 该类主方法 */public static void main(String args) GetConn getConn = new GetConn(); / 创建本类对象getConn.getConnection(); / 调用数据库连接方法import javax.swing.JLabel;import java.sql.*;import javax.swing.JTextField;import javax.swing.JFrame;import java.awt.GridLayout;import j
36、avax.swing.*;import java.awt.event.*;public class Person extends JFramepublic Person()setLayout(new GridLayout(3,2);add(new JLabel(Username);final JTextField t1 = new JTextField();add(t1);add(new JLabel(password); final JTextField t2 = new JTextField();add(t2); JButton jbtok = new JButton(OK); add(j
37、btok); JButton jbtcancle = new JButton(Cancle); add(jbtcancle);jbtok.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)tryConnection conn=new GetConn().getConnection();Statement st=conn.createStatement();System.out.println(*);System.out.println(t1.getText();String sql=s
38、elect * from t where username=+t1.getText()+ and password=+t2.getText()+;System.out.println(sql);ResultSet rs=st.executeQuery(sql);if (rs.next()setVisible(false); new CaiDan();elseSystem.out.println(登录失败);catch(Exception ex)ex.printStackTrace(););jbtcancle.addActionListener(new ActionListener()publi
39、c void actionPerformed(ActionEvent e)System.out.println(process cancle);setVisible(false););public static void main(String args)Person frame = new Person();frame.setTitle(Show);frame.pack();frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);
40、import java.awt.*;import javax.swing.*;public class CaiDan extends JFrame JMenuBar jMenuBarOne; JMenu fileMenu,editMenu,newFileMenu,helpMenu; JMenuItem openFile,closeFile,aboutFile,saveFile; JCheckBoxMenuItem newFileTxt,newFileJava; JRadioButtonMenuItem addFile,pasteFile,changeFile; ButtonGroup butt
41、onEdit; public CaiDan() jMenuBarOne=new JMenuBar(); buttonEdit=new ButtonGroup(); fileMenu=new JMenu(文件); editMenu=new JMenu(查询); helpMenu=new JMenu(帮助); newFileMenu =new JMenu(新建文件); openFile=new JMenuItem(打开文件); closeFile=new JMenuItem(关闭文件); saveFile=new JMenuItem(保存文件); aboutFile=new JMenuItem(关于); newFileTxt=new JCheckBoxMenuItem(文本文件); newFileJava=new JCheckBoxMen