数据库人事管理系统.docx
《数据库人事管理系统.docx》由会员分享,可在线阅读,更多相关《数据库人事管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
数据库人事管理系统
数据库系统原理及其应用教程课程设计报告
题目名称———人事管理系统
任课教师———
姓名:
学号:
2009年12月20日
一.概括
设计背景
在计算机不停发展的今日,计算机已经运用到各个领域,计算机的作用使由手工的操作到计算机的操作是一个大的飞腾,取代的复杂的简单犯错的人工操
作,节俭了大批的时间,提升了正确性,提升了数据的靠谱性。
数据库技术是计算机科学技术发展最快,应用最为宽泛的技术之一。
其在计算机设计,人工智能,电子商务,公司管理,科学计算等诸多领域均获得了宽泛
的应用,已经成为计算机信息系统和应用的中心技术和重要基础。
数据库设计是成立数据库及其应用系统的技术,是信息系统开发和建设中的中心技术,详细说,是指关于一个给定的应用环境,结构最优的数据库模式,建
立数据库及其应用系统,使之能够有效地储存数据,知足各样用户的应用需求(信息要乞降办理要求)。
数据库一个信息系统的各个部分可否密切地联合在一同以
及怎样联合,重点在数据库。
数据库设计的目标是为用户和各样应用系统供给一个信息基础设备和高效率的运转环境。
高效率的运转环境包含:
数据库数据的存取率、数据库储存空间的利用率、数据库系统运转管理的效率等都是高的。
为了便于公司人事管理,设计了认识管理系统,简化公司管理工作,实现管理现代化。
设计目的
为了使公司的认识管理效率获得提升,减少人工操作的犯错时机,实现数据共享,便于查问、增添、更新数据,实现整个公司的信息化和办公自动化,为公司的竞争供给优秀的条件。
设计内容
设计一个公司人事的数据库管理系统,包含数据库成立的需求剖析,数据的输入输出。
经过SQLServer2000实现。
设计用户的操作界面,实现数据的查问、增添、删除等功能。
设计三大基本
模块:
基本信息管理、考勤考评管理和系统用户管理。
利用的MFC设计界面,经过此中的ADOC实现数据库的连结。
设计平台
操作系统:
WindowsXP
DBMS:
SQLServer2000
开发工具:
VisualC++
二.需求剖析
1.功能剖析
依据需要达成的功能,设计出系统的整体功能模块。
本系统共分为3个功能模块:
基本信息管理、考评考勤管理、系统用户管理。
功能模块表示图以下:
人事管理系统
基
考
系
本
勤
统
信
考
用
息
评
户
管
管
管
理
理
理
图1
人事管理系统功能模块表示图
基本信息管理模块:
基本信息管理
部门管理职工管理退出系统
添
删
修
添
删
修
部
工
加
除
改
加
除
改
门
作
部
部
部
员
员
员
调
经
门
门
门
工
工
工
转
历
图2基本信息管理模块表示图
考勤考评管理模块:
考勤考评管理
考考
评勤
管管
理理
图3考勤考评管理模块表示图
系统用户管理模块:
系统用户管理
增添
改正密码用户管理密码复位
删除
图4系统用户管理模块表示图
2.工作流图
开始
用户登录
成功
确认用户种类
管理员
用户
重试
失败
基本信息管理考勤考评管理系统用户管理
管理系统管理员改正复位密码;
拥有全部权限用户信息;增添删除一般用
管理一般用户;户;
管理自己的用户改正复位自己用
查问权限信息户密码;
删除自己用户;
退出系统结束
图5系统工作流图
3.数据流图
部门信息
采纳树
状结构
管理部
门信息,
在部门
间成立
附属关
系。
数据库成立
职工信息用户信息
职工基本信息
用
户
信
息
表
教
家
育
庭
员
员
工
成
工
工
作
员
考
考
经
记
勤
评
历
录
实现数据的插入、
删除、查问等功能
图6数据流图
退
出
系
统
4.数据词典
部门表Departments
编号
字段名
数据种类
能否能够为空
能否为主键
说明
1
Dep_Id
int
NotNULL
主键
部门编号
2
Dep_Name
varchar(40)
NotNULL
部门名称
3
Describes
varchar(400)
部门职能描绘
4
UpperId
int
NotNULL
上司部门编号
表1表Departments的结构
职工基本表Employees
编
字段名
数据种类
能否能够为
能否为主
说明
号
空
键
1
Emp_Id
int
NotNULL
主键
工号
2
Emp_Name
varchar(50)
NotNULL
姓名
3
Photo
iamge
照片
4
Sex
char
(2)
性别
5
Nationality
varchar(40)
国籍
6
Birth
varchar(20)
出诞辰期
7
Political_Party
varchar(40)
政治相貌
8
Culture_Level
varchar(40)
文化水平
9
Marital_Condition
varchar(20)
婚姻情况
10
Family_Place
varchar(60)
籍贯
11
Id_Card
varchar(20)
身份证号
12
BadgeID
varchar(40)
编号
13
Office_Phone
varchar(30)
办公电话
14
Mobile
varchar(30)
手机号
15
Files_Keep_Org
varchar(100)
档案
16
Hukou
varchar(100)
户口
17
HireDate
varchar(20)
上班日期
18
Dep_Id
int
部门编号
19
Position
varchar(40)
岗位
20
Title
varchar(20)
职务
21
State
tinyint
职工状态
22
UpperId
int
上司职工编
号
23
Contract_Duration
varchar(20)
联系方式
24
Memo
varchar(200)
备注
25
Fillin_Person
varchar(30)
改正人
26
Fillin_Time
varchar(20)
改正时间
表2表Employees结构
家庭成员记录表Family
编号
字段名
数据种类
能否能够为空
能否为主键
说明
1
Id
tingint
NotNULL
主键
编号
2
Emp_Id
int
NotNULL
职工编号
3
Name
varchar(50)
NotNULL
姓名
4
Sex
char
(2)
性别
5
Age
tinyint
年纪
6
Relationship
varchar(20)
与职工关系
7
WorkingOrg
varchar(40)
工作单位
表3表Family结构
教育及工作经历记录表Experience
编号
字段名
数据种类
能否能够为空
能否为主键
说明
1
Id
tinyint
NotNULL
主键
编号
2
Emp_Id
int
NotNULL
职工编号
3
Start_Date
char(10)
开始日期
4
End_Date
char(10)
结束日期
5
School_Org
varchar(50)
学校名称
6
Title
varchar(20)
职务
表4表Experience的结构
职工考勤表Checkin
编号
字段名
数据种类
能否能够为空
能否为主键
说明
1
CheckDate
char(10)
NotNULL
候选键
考勤月份
2
Emp_Id
int
NotNULL
候选键
编号
3
qqDays
decimal(4,1)
考勤天数
4
ccDays
decimal(4,1)
出差天数
5
bjDays
decimal(4,1)
病假天数
6
sjDays
decimal(4,1)
事假天数
7
kgDays
decimal(4,1)
旷工天数
8
fdxjDays
decimal(4,1)
法定休假天数
9
nxDays
decimal(4,1)
年休天数
10
dxDays
decimal(4,1)
倒休天数
11
cdMinutes
tinyint
迟到时间
12
ztMinutes
tinyint
早走天数
13
ot1Days
decimal(4,1)
一类加班天数
14
ot2Days
decimal(4,1)
二类加班天数
15
ot3Days
decimal(4,1)
三类加班天数
16
Memo
varchar(200)
备注
表5表Checkin的结构
职工考评表Evaluation
编号
字段名
数据种类
能否能够为空
能否为主键
说明
1
EvaMonth
char(10)
NotNULL
候选键
考评月份
2
Emp_Id
int
NotNULL
候选键
编号
3
ztEva
varchar(200)
整体评论
4
jlReason
varchar(200)
奖赏事由
5
jlAmount
smallint
奖赏金额
6
cfReason
varchar(200)
处分事由
7
cfAmount
smallint
处分金额
8
Meno
varchar(200)
备注
表6表Evaluation的结构
用户信息表Users
编号
字段名
数据种类
能否能够为空
能否为主键
说明
1
UserName
varchar(40)
NotNULL
主键
用户名
2
Pwd
varchar(40)
NotNULL
密码
3
User_Type
tinyint
NotNULL
种类
表6表Users的结构
三.观点模型设计
1.实体及其属性
部门
上司部门
编号
编号
名称只好描绘
图7实体“部门”E-R图
工号
姓名
职工状态
照片
上司职工
编号
户口
性别
档案
联系方式
上班日期
国籍
手机号
备注
职工
出诞辰期
部门编号办公电话
改正人
岗位
编号政治相貌
改正时间身份证号
文化水平
职务
籍贯婚姻情况
图8实体“职工”的E-R图
编号工作单位
职工编号
关系
家庭成员
姓名年纪
性别
图9实体“家庭成员”的E-R图
编号
职工编号
开始日期
教育工作经历
学校名称
结束日期职务
图10实体“教育工作经历”的E-R图
节余实体“职工考勤记录”、“职工测评记录”、“用户信息”的E-R图近似,此处省略。
2.各实体联系图(除“用户信息”)
部门
1
管理
m
职工
1111
家属经历考勤测评
mmmm
家庭成员教育工作经历考勤记录测评记录
图11实体联系图
四逻辑设计
1.关系模式
(E-R模型变换为关系模式,指明所知足的范式并给出原因)
Departments:
Dep_Id,Dep_Name,Describes,UpperId
Employees:
Emp_Id,Emp_Name,Photo,Sex,Nationality,Birth,Political_Party,Culture_Level,Marital_Condition,Family_Place,Id_Card,BadgeID,Office_Phone,Mobile,Files_Keep_Org,Hukou,HireDate,Dep_Id,Position,Title,State,UpperId,Contract_Duration,Memo,Fillin_Person,Fillin_Time
Family:
Id,Emp_Id,Name,Sex,Age,Relationship,WorkingOrg
Experience:
Id,Emp_Id,Start_Date,End_Date,School_Org,Title
Checkin:
CheckDate,Emp_Id,qqDays,ccDays,bjDays,sjDays,kgDays,fdxjDays,nxDays,dxDays,cdMinutes,ztMinutes,ot1Days,ot2Days,ot3Days,Memo
Evaluation:
EvaMonth,Emp_Id,ztEva,jlReason,jlAmount,cfReason,cfAmount,Meno
Users:
UserName,Pwd,User_Type
2.范式剖析
因为每张基本表中每一个属性列只对应独一的值,即属性都是不行再分的,因此都知足第一范式(1NF)。
关于基本表Departments,我们认为Dep_Id,Dep_Name是不重名的,因此Dep_Id和Dep_Name关于Describes和UpperId存在部分依靠,因此只知足第一范式
1NF)。
关于基本表Users,只有三个属性,没有属性依靠,因此知足BC凡是(BCNF),同时也就知足第三范式(3NF)。
其余基本表,均不存在部分函数依靠和传达函数依靠,知足第三范式(3NF)。
五.源代码及查问截图
1.程序流程图
用户登录
登岸界面
管理员
一般用户密码正确?
一般用户登录
退出
管理员登岸
图12用户登录程序流程图
查问
是
否
再查找
否
是
结束
用户
查问条件
信息
存在
确认
图13查问程序流程图
插入
开始
信息
是
是保留
从头保留否成功
否是
结束
图14插入程序流程图
2.数据库连结方法
使用ADO连结数据库,此顶用到
MicrosoftDataListControl,version(OLEDB)
MicrosoftDataGridControl(SP6)(OLEDB)
MicrosoftDataComboControl,version(OLEDB)
MicrosoftADODataControl(SP6)(OLEDB)
四个控件实现与数据库的连结利用
连结数据库以下:
(其余控件见源代码)
ADOConn.cpp:
implementationoftheADOConnclass.
//////////////////////////////////////////////////////////////////////
#include"stdafx.h"
#include"ADOConn.h"
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
//
//
//#definenewDEBUG_NEW
//#endif
//
////////////////////////////////////////////////////////////////////////
//Construction/Destruction
////////////////////////////////////////////////////////////////////////
//
//ADOConn:
:
ADOConn()
//{
//
//}
//
//ADOConn:
:
~ADOConn()
//{
//
//}
//
//初始化—连结数据库
//voidADOConn:
:
OnInitADOConn()
//{
//初始化OLE/COM库环境
//:
:
CoInitialize(NULL);
//
//try
//{
//创立Connection对象
//m_pConnection.CreateInstance("ADODB.Connection");
//设置连结字符串,一定是BSTR型或许_bstr_t种类
_bstr_tstrConnect="
Provider=SQLOLEDB;
Server=WU-HUANZHUO;Database=HrSys;IntegratedSecurity=SSPI;
";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
//捕获异样
catch(_com_errore)
{
//显示错误信息
AfxMessageBox(e.Description());
}
}
履行查问
_RecordsetPtr&ADOConn:
:
GetRecordSet(_bstr_tbstrSQL)
{
try
{
连结数据库,假如Connection对象为空,则从头连结数据库
if(m_pConnection==NULL)
OnInitADOConn();
创立记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
获得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
捕获异样
catch(_com_errore)
{
显示错误信息
AfxMessageBox(e.Description());
}
返回记录集
returnm_pRecordset;
}
履行SQL语句,InsertUpdate_variant_tBOOLADOConn:
:
ExecuteSQL(_bstr_tbstrSQL)
{
_variant_tRecordsAffected;try
{
能否已经连结数据库
if(m_pConnection==NULL)
OnInitADOConn();
Connection对象的Execute方法:
(_bstr_tCommandText,
VARIANT*RecordsAffected,longOptions)
此中CommandText是命令字串,往常是SQL命令。
//参数RecordsAffected是操作达成后所影响的行数,
参数Options表示CommandText的种类:
adCmdText-文本命令;adCmdTable-表名
adCmdProc-储存过程;adCmdUnknown未-知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
returntrue;
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
returnfalse;
}
}
voidADOConn:
:
ExitConnect()
{
封闭记录集和连结
if(m_pRecordset!
=NULL)
m_pRecordset->Close();
m_pConnection->Close();
开释环境
:
:
CoUninitialize();
}
3.以基本表Departments为例,其各功能代码的实现
成立各基本表所对应的类,此处为表记清楚,以基本表名作为该类类名。
关系对应类,属性对应此中的成员变量,各操作由成员函数达成。
各基本表的查问、删除、插入功能的实现,以基本表Departments为例,其余表近似。
头文件:
Departments.h:
interfacefortheCDepartmentsclass.
//////////////////////////////////////////////////////////////////////
#include
#if!
defined(AFX_DEPARTMENTS_H__0EFF9A6D_F749_49ED_ADB0_170E78A422C6__INCLUDED_
)
#defineAFX_DEPARTMENTS_H__0EFF9A6D_F749_49ED_ADB0_170E78A422C6__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
classCDepartments
{
private:
intDep_id;
CStringDep_name;
CStringDescribe;
intUpperId;
public:
CStringArraya_DepName;
CStringArraya_DepId;
CStringArraya_UpperId;
CDepartments();
virtual~CDepartments();
读取和设置成员变量
intGetDep_id();
voidSetDep_id(intiDep_id);
CStringGetDep_name();
voidSetDep_name(CStringcDep_name);
CStringGetDescribe();
voidSetDes