数据库课程设计人事管理系统.docx

上传人:b****4 文档编号:24656331 上传时间:2023-05-29 格式:DOCX 页数:29 大小:151KB
下载 相关 举报
数据库课程设计人事管理系统.docx_第1页
第1页 / 共29页
数据库课程设计人事管理系统.docx_第2页
第2页 / 共29页
数据库课程设计人事管理系统.docx_第3页
第3页 / 共29页
数据库课程设计人事管理系统.docx_第4页
第4页 / 共29页
数据库课程设计人事管理系统.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数据库课程设计人事管理系统.docx

《数据库课程设计人事管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计人事管理系统.docx(29页珍藏版)》请在冰豆网上搜索。

数据库课程设计人事管理系统.docx

数据库课程设计人事管理系统

人事管理系统

一.设计目标

二.功能设计

三.数据库设计

3.1数据库设计

3.1.1数据库需求分析

3.1.2数据库概念结构设计

3.1.3数据库逻辑结构设计与实现

3.2系统设计

3.2.1系统功能分析

3.3.2系统功能模块设计

3.3.2数据流程图

3.3主框架窗口设计

3.3.1菜单的创建

3.3.2工具条的创建

3.3.3增加一个状态栏指示器

3.4增加新员工视类的创建

3.5人事变动视类的创建

3.6员工信息查询修改视图类的创建

3.7登录对话框的创建

3.8关于对话框的创建

四.系统实现

五.小结

六.分析及结论

七.附录

1.设计目标

人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配。

本系统主要维护新员工资料;详细记录人事变动,包括岗位和部门的调整;员工信息的查询和修改,包括员工个人信息和密码等。

根据系统功能的要求,人事管理系统可以分为新员工档案的输入,人事变更,员工档案的修改和查询等模块。

2.功能设计

企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理。

使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配。

人事管理系统在设计时主要考虑以下几项功能要求:

●新员工资料的输入。

●人事变动的详细记录,包括岗位和部门的调整。

●员工信息的查询和修改,包括员工个人信息等。

为了更好的理解该系统和读懂该系统的源码,读者应对以下的知识点有所了解:

●MSSQLSERVER2000数据库操作的基础知识。

●ODBC数据源基础知识。

●基本的SQL语句,如添加,查询,修改和删除记录语句。

●VisualC++界面设计和关于数据库的基础知识。

三.数据库设计

3.1数据库设计

3.1.1数据库需求分析

根据数据流程图,可以列出以下数据项和数据结构:

员工信息:

员工号,姓名,年龄,部门,职务,员工编号。

●人事变动:

记录号,员工,变动和详细描述。

●所需的外部数据支持。

●部门设置:

部门编号,名称等。

3.1.2数据库概念结构设计

人事管理系统的E-R图如图3-1所示。

图3-1人事管理系统E-R图

 

3.1.3数据库逻辑结构设计与实现

根据系统E-R图,本系统需要有2个数据表分别来存放员工个人信息和人事变动记录。

并且需要一个外部数据表(部门信息)的支持。

同时部分记录字段要用代码来表示,依次需要3个代码表来分别记录职务和人事变更的代码。

最后,设立一个计数器数据表用于实现员工号的自动分配。

这7个数据表用Access2000实现,Access2000中的设计视图如表所示。

其中数据类型的细节应根据具体字段分别设置,如PERSON表的ID字段大小为6,AUTHORITY字段,SEX字段,EDU_LEVEL字段和STATE字段的大小为1,DEPARTMENT字段,JOB字段的大小为3。

员工个人信息表(PERSON)

字段名称

数据类型

说明

ID

文本

员工号

NAME

文本

姓名

DEPARTMENT

文本

所在部门

JOB

文本

职务

SPECIALTY

文本

专业技能

REMARK

文本

备注

职务代码表(JOB)

字段名称

数据类型

说明

CODE

文本

代码

DESCRIPTION

文本

描述

部门信息表(DEPARTMENT)

字段名称

数据类型

说明

ID

文本

部门编号

NAME

文本

部门名称

3.2系统设计

3.2.1系统功能分析

人事管理系统主要有以下几项功能要求:

●新员工资料的输入。

●自动分配员工号。

●人事变动的详细记录,包括岗位和部门的调整。

●员工信息的查询和修改,包括员工个人信息等。

3.2.2系统功能模块设计

根据系统功能的要求,可以将系统分解成几个功能模块来分别设计,功能模块如图3-2所示。

图3-2人事管理系统功能模块图

 

3.2.3数据流程图

系统的数据流程图如图3-3所示,所有数据由人事科管理人员输入。

图3-3人事管理系统数据流程图

下面是系统运行时主要界面信息。

人事管理系统

“增加新员工”子窗口中,员工号和密码会自动按顺序生成,并且不允许修改。

“人事变动”和“员工信息查询修改”子窗口中,须先输入员工号,确认显示的信息后才可进行相关的修改。

产生的3个窗体列在“窗口”菜单下。

当鼠标在菜单项上移动时,状态栏中会自动显示菜单项的Prompt属性的内容。

“窗口”菜单中的4项功能是标准的窗口排列功能。

3.3主框架窗口设计

3.3.1菜单的创建

用VisualC++6.0的菜单编辑器(MenuEditor)可以会让你方便的创建菜单。

在菜单编辑器中打开的设计窗口如图3-6所示。

AppWizard创建的程序默认有两个菜单:

IDR_MAINFRAME为主框架窗口所用,IDR_TESTTYPE(设应用程序名为Test)为子框架窗口所用。

因本例中没有用默认的子框架,所以将IDR_TESTTYPE菜单删去,同时重新编辑IDR_MAINFRAME菜单,菜单属性设置如表3-11所示。

图3-6菜单编辑器窗口

3.3.2工具条的创建

用VisualC++6.0的工具条编辑器(ToolbarEditor)可以很方便的编辑工具条。

本程序创建的工具条如图所示,其中工具条各按钮的ID分别对应相应的菜单项,按从左到右的次序对应的菜单项ID如表3-12所示。

表3-12工具条按钮对应的菜单项ID

次序

ID

1

ID_SYSTEM_CONNECT

2

ID_SYSTEM_DISCONNECT

3

ID_MANAGE_ADD

4

ID_MANAGER_CHANGE

5

ID_MANAGER_SEARCH

6

ID_WINDOW_CASCADE

3.3.3增加一个状态栏指示器

在程序中加入一个状态栏指示器以显示登录状态。

首先用增加一个资源ID:

ID_INDICATOR_LOGIN,然后在MainFrm.cpp中找到indicators变量的定义处,添加此ID至其列表,程序如下:

StaticUNITindicators[]=

{

ID_SEPARATOR,//statuslineindicator

ID_INDICATOR_LOGIN,//登录状态

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

3.4增加新员工视类的创建

首先加入一个新的窗体资源,在InsertResource对话框中选择Dialog的IDD_FORMVIEW项。

窗体创建后,在其上添加所需控件,最后的布局如图3-8所示。

创建好资源后,为窗体加入一个由CFormView类继承的CAddView封装此窗体资源,然后用ClassWizard为所需控件加入成员变量。

主要控件类型、ID和对应的成员变量及说明如表所示。

增加新员工窗体

 

表1-13增加新员工窗体控件列表

控件类型

ID

成员变量

说明

EditBox

IDC_ADD_EDT_ID

m_strID

员工号

EditBox

IDC_ADD_EDT_NAME

m_strName

姓名

ComboBox

IDC_ADD_CMB_DEPARTMENT

m_cDepartment

m_strDepartment

部门

ComboBox

IDC_ADD_CMB_JOB

m_cJob

m_strJob

职务

Button

IDC_ADD_BTN_ADD

“增加”按钮

CAddView类需要用到主框架窗口类和加密类,因此需要在cpp文件开头加入以下两行:

#include"Crypt.h"

#include"MainFrm.h"

另外,为了使用全局数据库变量db,需要在cpp文件开头加入如下语句:

ExternCDatabasedb;

3.5人事变动视类的创建

首先加入一个新的窗体资源,同样在InsertResource对话框中选择Dialog的IDD_FORMVIEW项。

窗体创建后,在其上添加所需控件,最后的布局如图3-9所示。

创建好资源后,为窗体加入一个由CFormView类继承的CChangeView封装此窗体资源,然后用ClassWizard为所需控件加入成员变量。

主要控件类型,ID和对应的成员变量及说明如表3-14所示。

图3-9人事变动输入窗体

 

表1-14人事变动窗体控制列表

控制类型

ID

成员变量

说明

EditBox

IDC_CHANGE_EDT_ID

m_strID

员工号

EditBox

IDC_CHANGE_EDT_NAME

m_strName

姓名

ComboBox

IDC_CHANGE_CMB_DEPARTMENT

m_cDepartment

部门

ComboBox

IDC_CHANGE_CMB_JOB

m_cJob

职务

Button

IDC_CHANGE_BTN_CHANGE

“修改”按钮

CChangeView中需要加入如下语句包含主框架窗口类:

#include"MainFrm.h"

同样,本类也需要加入以下语句引用全局变量db。

externCDatabasedb;

3.6员工信息查询修改视图类的创建

首先加入一个新的窗体资源,同样在InsertResourse对话框中选择Dialog的IDD_FORMVIEW项。

窗体最后的布局如图3-10所示。

创建好资源后,为窗体加入一个由CFormView类继承的CSearchView封装此窗体资源,然后用ClassWizard为所需控件加入成员变量。

主要控件类型,ID和对应的成员变量及说明如表所示。

员工信息查询修改视图

 

表3-15员工信息查询修改窗体控件列表

控制类型

ID

成员变量

说明

EditBox

IDC_SEARCH_EDT_ID

m_strID

员工号

ComboBox

IDC_SEARCH_CMB_DEPARTMENT

m_cDepartment

部门

ComboBox

IDC_SEARCH_CMB_JOB

m_cJob

职务

EditBox

IDC_SEARCH_EDT_NAME

m_strName

姓名

Button

IDC_SEARCH_BTN_CHANGE

“修改员工信息”按钮

程序的代码如下:

//chiView.cpp:

implementationoftheCChiViewclass

//

#include"stdafx.h"

#include"chi.h"

#include"chiSet.h"

#include"chiDoc.h"

#include"chiView.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

#include"Dlgadd.h"

#include"department.h"

#include"post.h"

#include"Dlgdelete.h"

department*m_depSet;

post*m_postSet;

/////////////////////////////////////////////////////////////////////////////

//CChiView

IMPLEMENT_DYNCREATE(CChiView,CRecordView)

BEGIN_MESSAGE_MAP(CChiView,CRecordView)

//{{AFX_MSG_MAP(CChiView)

ON_BN_CLICKED(IDC_BUTTON1,OnButtonadd)

ON_BN_CLICKED(IDC_BUTTON2,OnButtondelete)

ON_BN_CLICKED(IDC_BUTTON3,OnButtonedit)

ON_BN_CLICKED(IDC_BUTTON4,OnButtonfind)

//}}AFX_MSG_MAP

//Standardprintingcommands

ON_COMMAND(ID_FILE_PRINT,CRecordView:

:

OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CRecordView:

:

OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CRecordView:

:

OnFilePrintPreview)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CChiViewconstruction/destruction

CChiView:

:

CChiView()

:

CRecordView(CChiView:

:

IDD)

{

//{{AFX_DATA_INIT(CChiView)

m_pSet=NULL;

m_depSet=NULL;

m_postSet=NULL;

m_number=_T("");

m_name=_T("");

m_age=0;

m_post=_T("");

m_dep=_T("");

m_depid=_T("");

//}}AFX_DATA_INIT

//TODO:

addconstructioncodehere

}

CChiView:

:

~CChiView()

{

}

voidCChiView:

:

DoDataExchange(CDataExchange*pDX)

{

CRecordView:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CChiView)

DDX_Text(pDX,IDC_EDIT11,m_number);

DDX_Text(pDX,IDC_EDIT22,m_name);

DDX_Text(pDX,IDC_EDIT33,m_age);

DDX_Text(pDX,IDC_EDIT44,m_post);

DDX_Text(pDX,IDC_EDIT55,m_dep);

DDX_Text(pDX,IDC_EDIT66,m_depid);

//}}AFX_DATA_MAP

}

BOOLCChiView:

:

PreCreateWindow(CREATESTRUCT&cs)

{

//TODO:

ModifytheWindowclassorstylesherebymodifying

//theCREATESTRUCTcs

returnCRecordView:

:

PreCreateWindow(cs);

}

voidCChiView:

:

OnInitialUpdate()

{

m_pSet=&GetDocument()->m_chiSet;

m_depSet=&GetDocument()->m_1;

m_postSet=&GetDocument()->m_2;

CRecordView:

:

OnInitialUpdate();

GetParentFrame()->RecalcLayout();

ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////

//CChiViewprinting

BOOLCChiView:

:

OnPreparePrinting(CPrintInfo*pInfo)

{

//defaultpreparation

returnDoPreparePrinting(pInfo);

}

voidCChiView:

:

OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

{

//TODO:

addextrainitializationbeforeprinting

}

voidCChiView:

:

OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

{

//TODO:

addcleanupafterprinting

}

/////////////////////////////////////////////////////////////////////////////

//CChiViewdiagnostics

#ifdef_DEBUG

voidCChiView:

:

AssertValid()const

{

CRecordView:

:

AssertValid();

}

voidCChiView:

:

Dump(CDumpContext&dc)const

{

CRecordView:

:

Dump(dc);

}

CChiDoc*CChiView:

:

GetDocument()//non-debugversionisinline

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CChiDoc)));

return(CChiDoc*)m_pDocument;

}

#endif//_DEBUG

/////////////////////////////////////////////////////////////////////////////

//CChiViewdatabasesupport

CRecordset*CChiView:

:

OnGetRecordset()

{

returnm_pSet;

}

 

/////////////////////////////////////////////////////////////////////////////

//CChiViewmessagehandlers

voidCChiView:

:

OnButtonadd()

{

Dlgadddlg_add;

if(dlg_add.DoModal()==IDOK)

{

UpdateData();

if(!

m_pSet->IsOpen())

{

m_pSet->Open();

}

m_pSet->AddNew();

m_pSet->m_son=dlg_add.m_number;

m_pSet->m_sname=dlg_add.m_name;

m_pSet->m_sage=dlg_add.m_age;

m_pSet->Update();

m_pSet->Close();

if(!

m_postSet->IsOpen())

{

m_postSet->Open();

}

m_postSet->AddNew();

m_postSet->m_sno=dlg_add.m_number;

m_postSet->m_dno=dlg_add.m_depid;

m_postSet->m_post=dlg_add.m_post;

m_postSet->Update();

m_postSet->Close();

if(!

m_depSet->IsOpen())

{

m_depSet->Open();

}

m_depSet->AddNew();

m_depSet->m_dno=dlg_add.m_depid;

m_depSet->m_dname=dlg_add.m_dep;

m_depSet->Update();

m_depSet->Requery();

m_depSet->Close();

MessageBox("信息添加成功!

");

}

}

voidCChiView:

:

OnButtondelete()

{

inti=0;

Dlgdeletedlg_delete;

if(dlg_delete.DoModal()==IDOK)

{

UpdateData();

if(!

m_pSet->IsOpen())

{

m_pSet->Open();

}

while(!

m_pSet->IsEOF())

{

if(m_pSet->m_son==dlg_delete.m_number)

{

m_pSet->Delete();

m_pSet->Requery();

m_pSet->Close();

i=1;

break;

}

else

m_pSet->MoveNext();

}

if(!

m_postSet->IsOpen())

{

m_postSet->Open();

}

while(!

m_postSet->IsEOF())

{

if(m_postSet->m_sno==dlg_delete.m_number)

{

m_postSet->Delete();

m_postSet->Requery();

m_postSet->Close();

}

m_postSet->MoveNext();

}

if(i)

{

m_postSet->Update();

MessageBox("deletesuccessful");

}

else

MessageBox("nomessage");

}

}

voidCChiView:

:

OnButtonedit()

{

Dlgadddlg_add;

if(dlg_add.DoModal()==IDOK)

{

UpdateData();

if(!

m_pSet->IsOpen())

{

m_pSet->Open();

}

while(!

m_pSet->IsEOF())

{

if(m_pSet->m_son==dlg_add.m_number)

{

m_pSet->Edit();

m_pSet->m_son=dlg_add.m_num

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1