Windows系统编程课程设计报告 人事管理系统

中南民族大学计算机科学学院

Windows系统编程

课程设计报告

题   目:  人事管理系统

人事档案管理设计 

专          业    自动化                

学  生  姓  名   段广帅                 

班  级  学  号    1  08064009                

完  成  日  期   20101229                 

指  导  教  师    郑波俊  程鹏                


一、课题名称

人事管理系统

(人事档案管理设计)

二、课题内容和要求

1.内容:

现代企业对人事档案管理的重视程度正在快速提高,而信息技术在人力资源管理中的应用,将有助于企业优化人事档案管理的业务流程,提高工作效率,改善服务质量,并提供基于信息的决策支持。本文主要介绍了人力资源管理系统的分析、结构特性设计及行为特性设计的实现过程,详细论述了总体设计思想、数据库设计和功能模块设计。实现了人员信息管理,考勤管理,员工考核,奖罚管理,教育培训等功能。整个系统的设计过程中,充分考虑了数据库的安全性、一致性、稳定性和可靠性的问题,并具有很强的向导作用,为操作人员提供了丰富的决策功能,而且操作简单方便。

2.要求:

建立一个合理的人事档案管理系统,从而能够对单位人事档案做完善的管理,使企业管理更加科学规范,并能根据系统提供的准确信息进行适当的调整,使企业更好发展。
  并做到以下几点:
简单性: 系统设计尽量简单,从而实现使用方便、提高效率、节省开支、提高系统的运行质量。
灵活性: 系统对外界条件的变化有较强的适应能力。
完整性: 系统是各个子系统的集合,作为一个有机的整体存在。因此,要求各个子系统的功能尽量规范,数据采集统一,语言描述一致。
可靠性: 实现安全的、可靠的数据保护措施。

三、开发工具介绍

 ACCESS2000的介绍:

1.基本含义

  ACCESS2000是office自带的数据库

  Access 是Office2000里面的一个组件。是用来制作简单的数据库。

  还有的意思就是访问、还有接入的意思。

  如Access list 访问列表

  Access point 接入点

2.Access 数据库功能简介

  在办公软件Office套件中,最为广大用户熟悉的是Word和Excel,因为它们功能强大且方便易用,更因为它们不仅可用于办公,还可用于个人写作和家庭记帐理财等。同为Office套件中一部分的Access,虽然有着同样强大的功能,但使用的人却相对少些,不像Word和Excel那样广泛。事实上,真正用过Access的用户,对其强大功能和灵活应用均称赞有加。 Access 数据库管理系统是Microsoft Office 套件的重要组成部分,适用于小型商务活动,用以存贮和管理商务活动所需要的数据。Access不仅是一个数据库,而且它具有强大的数据管理功能,它可以方便地利用各种数据源,生成窗体(表单),查询,报表和应用程序等。

  数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图像、声音等。

3.相关信息

  Microsoft Access是一种关系式数据库,关系式数据库由一系列表组成,表又由一系列行和列组成,每一行是一个记录,每一列是一个字段,每个字段有一个字段名,字段名在一个表中不能重复。图1是一个“产品”表的例子。“产品”表由10个记录组成,一个记录占一行,每一个记录由产品ID、产品名称、库存量、订货量、单价和折扣率6个字段组成。“产品ID”是字段名,其下面的1,2等是字段的值。

表与表之间可以建立关系(或称关联,连接),以便查询相关联的信息。Access数据库以文件形式保存,文件的扩展名是MDB。

4.Access 数据库的对象

  Access 数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。

  表(Table) 表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。

  查询(Query)查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。

  窗体(Form) 窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。

  报表(Report) 报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。

  宏(Macro) 宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。

模块(Module) 模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual Basic编译。

Visual C++ 6.0简介:

Visual C++ 6.0 是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序

  简称VC或者VC6.0

  由于C++是由C语言发展起来的 也支持C语言的编译

  6.0版本是使用最多的版本,很经典。

  最大的缺点是对于模版的支持比较差

现在的最新版C++编译器集合在Microsoft Visual Studio 2010软件包含C++,Visual basic,C#,J#,.net。其中,VC开发环境的版本已经升级至Microsoft Visual C++ 2010,对C++的支持更加全面稳定

四、设计思路

我主要负责人事档案管理这一模块

整个系统包括系统管理、基础数据管理、人事档案管理、考勤管理、数据库管理以及备忘录6大模块。并分为管理员系统和用户系统。

   总体设计思想
   首先根据用户的情况制定完善的权限管理,用户根据权限进入,拥有不同的操作功能。系统包括系统管理、基础数据管理、人事档案管理、考勤管理、数据库管理以及备忘录功能,并提供查询。重点突出灵活的人员信息管理。
  系统设计为C/S(客户机/服务器)模式,服务器程序主要采用ACCESS,可以平稳的向SQL SERVER等大型数据库做平稳的升级,本应用软件主要针对客户机来设计和编程,实现对数据库的备份操作,并提供数据完整性检验及数据保护等措施。
  我主要负责的人事档案管理这一模块功能的设计如下:

人事档案管理包括人事档案浏览、人事资料查询和人事资料统计三大部分。
●人事档案浏览
    基本档案:录入人员人事资料(包括个人基本信息,职工编号,社会背景,联系方式,入职时间,职工类型,工资类别和其它)。


  家庭成员:录入员工家庭成员资料(包括与本人关系,工作单位,担任职务,联系方式)

  工作经历:主要记录员工工作中升降的历程

奖罚记录:主要记录员工在工作期间获得的各种奖励以及惩罚

职称评定:录入员工在工作期间所获得的工作能力的认证

培训记录:主要记录员工在职期间的教育培训情况

●人事资料查询

查询条件分为个人信息和部门信息两部分,只需输入部分知道的信息,点击查询即可查到符合条件的员工信息

●人事资料统计

 通过各种类别(包括性别,民族,年龄,籍贯,职务,文化程度,政治面貌,婚姻状况,工资类别等)来对员工进行系统的统计

相应代码:

人事档案浏览:

// BrowseDlg.cpp : implementation file

//

#include "stdafx.h"

#include "manager.h"

#include "BrowseDlg.h"

#include "AboutPaySet.h"

#include "DeptSet.h"

#include "DutySet.h"

#include "EducationSet.h"

#include "FolkSet.h"

#include "PoliticalSet.h"

#include "TechnicalSet.h"

#include "WorkerStatusSet.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

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

// CBrowseDlg dialog

CBrowseDlg::CBrowseDlg(CWnd* pParent /*=NULL*/)

       : CDialog(CBrowseDlg::IDD, pParent)

{

       //{{AFX_DATA_INIT(CBrowseDlg)

       m_strContent = _T("");

       m_strCode = _T("");

       m_strName = _T("");

       m_nCondition = -1;

       //}}AFX_DATA_INIT

       m_bNew = FALSE;

}

void CBrowseDlg::DoDataExchange(CDataExchange* pDX)

{

       CDialog::DoDataExchange(pDX);

       //{{AFX_DATA_MAP(CBrowseDlg)

       DDX_Control(pDX, IDC_BUTTON_CANCEL, m_ctrCancelBnt);

       DDX_Control(pDX, IDC_BUTTON_MODIFY, m_ctrModify);

       DDX_Control(pDX, IDC_BUTTON_SAVE, m_ctrSaveBnt);

       DDX_Control(pDX, IDC_BUTTON_NEW, m_ctrNewBnt);

       DDX_Control(pDX, IDC_BUTTON_DELETE, m_ctrDelBnt);

       DDX_Control(pDX, IDC_COMBO_CONDITION, m_ctrCondition);

       DDX_Control(pDX, IDC_COMBO_CONTENT, m_ctrContent);

       DDX_Control(pDX, IDC_LIST1, m_ctrList);

       DDX_Control(pDX, IDC_TAB1, m_ctrTabSheet);

       DDX_CBString(pDX, IDC_COMBO_CONTENT, m_strContent);

       DDX_Text(pDX, IDC_EDIT_CODE, m_strCode);

       DDX_Text(pDX, IDC_EDIT_NAME, m_strName);

       DDX_CBIndex(pDX, IDC_COMBO_CONDITION, m_nCondition);

       //}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CBrowseDlg, CDialog)

       //{{AFX_MSG_MAP(CBrowseDlg)

       ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)

       ON_CBN_SELCHANGE(IDC_COMBO_CONDITION, OnSelchangeComboCondition)

       ON_CBN_SELCHANGE(IDC_COMBO_CONTENT, OnSelchangeComboContent)

       ON_CBN_EDITUPDATE(IDC_COMBO_CONTENT, OnEditupdateComboContent)

       ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch)

       ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)

       ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)

       ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)

       ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)

       ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)

       ON_NOTIFY(TCN_SELCHANGING, IDC_TAB1, OnSelchangingTab1)

       ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)

       ON_WM_CLOSE()

       ON_WM_DESTROY()

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

// CBrowseDlg message handlers

BOOL CBrowseDlg::OnInitDialog()

{

       CDialog::OnInitDialog();

       //设置员工基本档案属性页的记录集

       //实现主体对话框与属性页对话框的数据一致

       m_BaseInfoDlg.m_pPersonSet = &m_recordset;

       //建立员工列表

       m_ctrList.InsertColumn(0,"姓名");

       m_ctrList.InsertColumn(1,"员工号");

       m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

       m_ctrList.SetColumnWidth(0,80);

       m_ctrList.SetColumnWidth(1,80);

       //在员工列表中显示员工姓名和员工号

       CString strSQL;

       strSQL="select * from person";

       RefreshData(strSQL);

       //添加各个属性页

       m_ctrTabSheet.AddPage("基本档案", &m_BaseInfoDlg, IDD_PAGE_BASEINFO);

       m_ctrTabSheet.AddPage("家庭成员", &m_FamilyDlg, IDD_PAGE_FAMILY);

       m_ctrTabSheet.AddPage("工作经历", &m_HistoryDlg, IDD_PAGE_HISTORY);

       m_ctrTabSheet.AddPage("奖惩纪录", &m_HonorDlg, IDD_PAGE_HONOR);

       m_ctrTabSheet.AddPage("职称评定", &m_QualificationDlg, IDD_PAGE_QUALIFICATION);

       m_ctrTabSheet.AddPage("培训纪录", &m_TrainDlg, IDD_PAGE_TRAIN);

       m_ctrTabSheet.Show();

      

       return TRUE; 

}

void CBrowseDlg::RefreshData(CString strSQL)

{

       m_ctrList.DeleteAllItems();

       m_ctrList.SetRedraw(FALSE);

       UpdateData(TRUE);

//     strSQL="select * from dept";

       if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

              return ;

       }    

//     m_recordset.MoveFirst();

       int i=0;

       while(!m_recordset.IsEOF())

       {

              m_ctrList.InsertItem(i,m_recordset.m_name);

              m_ctrList.SetItemText(i++,1,m_recordset.m_ID);

              m_recordset.MoveNext();

       }

       m_recordset.Close();

       m_ctrList.SetRedraw(TRUE);

      

}

void CBrowseDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)

{

       // TODO: Add your control notification handler code here

       //更新当前记录信息

       int i = m_ctrList.GetSelectionMark();

      

       m_strName = m_ctrList.GetItemText(i,0);

       m_strCode = m_ctrList.GetItemText(i,1);

       m_BaseInfoDlg.m_strID = m_strCode;

       m_BaseInfoDlg.RefreshData();

       UpdateData(FALSE);

       //设置按钮状态

       m_ctrNewBnt.EnableWindow(TRUE);

       m_ctrDelBnt.EnableWindow(TRUE);

       m_ctrSaveBnt.EnableWindow(FALSE);

       m_ctrCancelBnt.EnableWindow(FALSE);

       m_ctrModify.EnableWindow(TRUE);

       m_bNew = FALSE;

       m_BaseInfoDlg.m_ctrID.EnableWindow(FALSE);

       //更新各属性页信息

       m_FamilyDlg.RefreshData(m_strCode);

       m_HistoryDlg.RefreshData(m_strCode);

       m_HonorDlg.RefreshData(m_strCode);

       m_QualificationDlg.RefreshData(m_strCode);

//     m_RecordDlg.RefreshData(m_strCode);

       m_TrainDlg.RefreshData(m_strCode);

       *pResult = 0;

}

void CBrowseDlg::OnSelchangeComboCondition()

{

       // TODO: Add your control notification handler code here

       UpdateData();

       CString strSQL;

       //清空ComboBox查询内容//////////////////////

       int nCount=m_ctrContent.GetCount();

       for(int i=0;i<nCount;i++)

       {

              m_ctrContent.DeleteString(0);

       }

       ///////////////////////////////按照选择的查询条件,添加查询内容///////////////////////////////////

       if(0==m_nCondition)

       {//按部门查询

              CDeptSet recordset ;

              strSQL="select * from dept";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_dept);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

       else if(1==m_nCondition)

       {//按职工职务查询

              CDutySet recordset ;

              strSQL="select * from duty";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_duty);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

       else if(2==m_nCondition)

       {//按职工职称查询

              CTechnicalSet recordset ;

              strSQL="select * from technical";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_technical);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

       else if(3==m_nCondition)

       {//按职工类型查询

              CWorkerStatusSet recordset ;

              strSQL="select * from status";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_workstatus);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

       else if(4==m_nCondition)

       {//按工资类别查询

              CAboutPaySet recordset ;

              strSQL="select * from aboutpay";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_aboutpay);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

       else if(5==m_nCondition)

       {//按职工性别查询

              m_ctrContent.AddString("男");

              m_ctrContent.AddString("女");

       }

       else if(6==m_nCondition)

       {//按婚姻状况查询

              m_ctrContent.AddString("未婚");

              m_ctrContent.AddString("已婚");

       }

       else if(7==m_nCondition)

       {//按职工民族查询

              CFolkSet recordset ;

              strSQL="select * from folk";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_folk);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

       else if(8==m_nCondition)

       {//按政治面貌查询

              CPoliticalSet recordset ;

              strSQL="select * from political";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_political);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

       else if(9==m_nCondition)

       {//按文化程度查询

              CEducationSet recordset ;

              strSQL="select * from education";

              if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }    

              while(!recordset.IsEOF())

              {

                     m_ctrContent.AddString(recordset.m_education);

                     recordset.MoveNext();

              }

              recordset.Close();

       }

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

       //设置按钮状态

       m_ctrNewBnt.EnableWindow(TRUE);

       m_ctrDelBnt.EnableWindow(TRUE);

       m_ctrSaveBnt.EnableWindow(FALSE);

       m_ctrCancelBnt.EnableWindow(FALSE);

       m_ctrModify.EnableWindow(TRUE);

       m_bNew = FALSE;

       m_BaseInfoDlg.m_ctrID.EnableWindow(FALSE);

}

void CBrowseDlg::OnSelchangeComboContent()

{

       // TODO: Add your control notification handler code here

       //设置按钮状态

       m_ctrNewBnt.EnableWindow(TRUE);

       m_ctrDelBnt.EnableWindow(TRUE);

       m_ctrSaveBnt.EnableWindow(FALSE);

       m_ctrCancelBnt.EnableWindow(FALSE);

       m_ctrModify.EnableWindow(TRUE);

       m_bNew = FALSE;

       m_BaseInfoDlg.m_ctrID.EnableWindow(FALSE);

}

void CBrowseDlg::OnEditupdateComboContent()

{

       // TODO: Add your control notification handler code here

}

void CBrowseDlg::OnButtonSearch()

{

       // TODO: Add your control notification handler code here

       UpdateData(TRUE);

      

       if(m_nCondition<0)

       {

              MessageBox("请选择查询条件!");

              m_ctrCondition.SetFocus();

              return;

       }

       if(m_strContent=="")

       {

              MessageBox("请输入查询内容!");

              m_ctrContent.SetFocus();

              return;

       }

       CString strSQL;

       if(0==m_nCondition)

       {//按部门查询

              strSQL.Format("select * from person where dept='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(1==m_nCondition)

       {//按职工职务查询

              strSQL.Format("select * from person where duty='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(2==m_nCondition)

       {//按职工职称查询

              strSQL.Format("select * from person where technical='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(3==m_nCondition)

       {//按职工类型查询

              strSQL.Format("select * from person where isworker='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(4==m_nCondition)

       {//按工资类别查询

              strSQL.Format("select * from person where aboutpay='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(5==m_nCondition)

       {//按职工性别查询

              strSQL.Format("select * from person where sex='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(6==m_nCondition)

       {//按婚姻状况查询

              strSQL.Format("select * from person where ismarry='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(7==m_nCondition)

       {//按职工民族查询

              strSQL.Format("select * from person where folk='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(8==m_nCondition)

       {//按政治面貌查询

              strSQL.Format("select * from person where political='%s'",m_strContent);

              RefreshData(strSQL);

       }

       else if(9==m_nCondition)

       {//按文化程度查询

              strSQL.Format("select * from person where education='%s'",m_strContent);

              RefreshData(strSQL);

       }

       //设置按钮状态

       m_ctrNewBnt.EnableWindow(TRUE);

       m_ctrDelBnt.EnableWindow(TRUE);

       m_ctrSaveBnt.EnableWindow(FALSE);

       m_ctrCancelBnt.EnableWindow(FALSE);

       m_bNew = FALSE;

       m_ctrModify.EnableWindow(TRUE);

       m_BaseInfoDlg.m_ctrID.EnableWindow(FALSE);

}

void CBrowseDlg::OnButtonNew()

{

       //选择基本档案信息属性页

       m_ctrTabSheet.SetCurSel(0);

       //清空基本档案信息属性页中数据

       m_BaseInfoDlg.Clear();

       //设置基本档案信息属性页状态

       m_BaseInfoDlg.m_ctrID.EnableWindow();

       //设置按钮状态

       m_ctrNewBnt.EnableWindow(FALSE);

       m_ctrDelBnt.EnableWindow(FALSE);

       m_ctrSaveBnt.EnableWindow(TRUE);

       m_ctrCancelBnt.EnableWindow(TRUE);

       m_ctrModify.EnableWindow(FALSE);

       m_bNew = TRUE;

}

void CBrowseDlg::OnButtonSave()

{

       // TODO: Add your control notification handler code here

       //保存数据到数据库中

       if(!m_BaseInfoDlg.Save())

              return;

       m_BaseInfoDlg.RefreshData();

       m_BaseInfoDlg.m_ctrID.EnableWindow(FALSE);

       //设置按钮状态

       m_ctrNewBnt.EnableWindow(TRUE);

       m_ctrDelBnt.EnableWindow(TRUE);

       m_ctrSaveBnt.EnableWindow(FALSE);

       m_ctrCancelBnt.EnableWindow(FALSE);

       m_ctrModify.EnableWindow(TRUE);

       m_bNew = FALSE;

       //更新对话框上当前记录信息

       m_strName = m_BaseInfoDlg.m_strName;

       m_strCode = m_BaseInfoDlg.m_strID;

       UpdateData(FALSE);

       //更新列表信息

       CString strSQL;

       strSQL="select * from person";

       RefreshData(strSQL);

       //更新各属性页信息

       m_FamilyDlg.RefreshData(m_strCode);

       m_HistoryDlg.RefreshData(m_strCode);

       m_HonorDlg.RefreshData(m_strCode);

       m_QualificationDlg.RefreshData(m_strCode);

//     m_RecordDlg.RefreshData(m_strCode);

       m_TrainDlg.RefreshData(m_strCode);

      

}

void CBrowseDlg::OnButtonDelete()

{

       // TODO: Add your control notification handler code here

       int i = m_ctrList.GetSelectionMark();

       if(0>i)

       {

              MessageBox("请选择一个职工进行删除!");

              return;

       }

       CString strSQL;

       strSQL.Format("select * from person where ID='%s'",m_ctrList.GetItemText(i,1));

       if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

              return ;

       }

       //删除该用户

       m_recordset.Delete();

       m_recordset.Close();

       //更新用户列表

       strSQL = "select * from person";

       RefreshData(strSQL);

       //更新对话框上当前记录信息

       m_strCode = "";

       m_strName = "";

       UpdateData(FALSE);

       m_BaseInfoDlg.Clear();

       //更新各属性页信息

       m_FamilyDlg.RefreshData(m_strCode);

       m_HistoryDlg.RefreshData(m_strCode);

       m_HonorDlg.RefreshData(m_strCode);

       m_QualificationDlg.RefreshData(m_strCode);

//     m_RecordDlg.RefreshData(m_strCode);

       m_TrainDlg.RefreshData(m_strCode);

}

void CBrowseDlg::OnButtonModify()

{

       // TODO: Add your control notification handler code here

       //保存数据到数据库中

       if(!m_BaseInfoDlg.Modify())

              return;

       m_BaseInfoDlg.RefreshData();

       //更新对话框上当前记录信息

       m_strName = m_BaseInfoDlg.m_strName;

       m_strCode = m_BaseInfoDlg.m_strID;

       UpdateData(FALSE);

       //更新列表信息

       CString strSQL;

       strSQL="select * from person";

       RefreshData(strSQL);

       //更新各属性页信息

       m_FamilyDlg.RefreshData(m_strCode);

       m_HistoryDlg.RefreshData(m_strCode);

       m_HonorDlg.RefreshData(m_strCode);

       m_QualificationDlg.RefreshData(m_strCode);

//     m_RecordDlg.RefreshData(m_strCode);

       m_TrainDlg.RefreshData(m_strCode);

      

}

void CBrowseDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)

{

       // TODO: Add your control notification handler code here

       if(m_bNew)

       {    

              m_ctrTabSheet.SetCurSel(1);

              m_ctrTabSheet.SetCurSel(0);

              m_ctrTabSheet.UpdateWindow();

              *pResult = 0;

              return;

       }

       *pResult = 0;

}

void CBrowseDlg::OnSelchangingTab1(NMHDR* pNMHDR, LRESULT* pResult)

{

       // TODO: Add your control notification handler code here

       *pResult = 0;

}

void CBrowseDlg::OnButtonCancel()

{

       //设置按钮状态

       m_ctrNewBnt.EnableWindow(TRUE);

       m_ctrDelBnt.EnableWindow(TRUE);

       m_ctrSaveBnt.EnableWindow(FALSE);

       m_ctrCancelBnt.EnableWindow(FALSE);

       m_ctrModify.EnableWindow(TRUE);

       m_bNew = FALSE;

}

void CBrowseDlg::OnClose()

{

       // TODO: Add your message handler code here and/or call default

      

       CDialog::OnClose();

}

void CBrowseDlg::OnDestroy()

{

       CDialog::OnDestroy();

       // TODO: Add your message handler code here

}

人事档案查询:

CSearchDlg::CSearchDlg(CWnd* pParent /*=NULL*/)

       : CDialog(CSearchDlg::IDD, pParent)

{

       //{{AFX_DATA_INIT(CSearchDlg)

       m_strAboutPay = _T("");

       m_strDept = _T("");

       m_strDuty = _T("");

       m_strEducation = _T("");

       m_strFolk = _T("");

       m_strIsWorker = _T("");

       m_strMarry = _T("");

       m_strPolitical = _T("");

       m_strSex = _T("");

       m_strTechnical = _T("");

       m_nAge = 0;

       m_strDept2 = _T("");

       m_strDept3 = _T("");

       m_strName = _T("");

       m_strNative = _T("");

       m_bType = FALSE;

       //}}AFX_DATA_INIT

}

void CSearchDlg::DoDataExchange(CDataExchange* pDX)

{

       CDialog::DoDataExchange(pDX);

       //{{AFX_DATA_MAP(CSearchDlg)

       DDX_Control(pDX, IDC_LIST1, m_ctrList);

       DDX_Control(pDX, IDC_COMBO_TECHNICAL, m_ctrTechnical);

       DDX_Control(pDX, IDC_COMBO_POLITICAL, m_ctrPolitical);

       DDX_Control(pDX, IDC_COMBO_MARRY, m_ctrMarry);

       DDX_Control(pDX, IDC_COMBO_ISWORKER, m_ctrIsWorker);

       DDX_Control(pDX, IDC_COMBO_FOLK, m_ctrFolk);

       DDX_Control(pDX, IDC_COMBO_EDUCATION, m_ctrEducation);

       DDX_Control(pDX, IDC_COMBO_DUTY, m_ctrDuty);

       DDX_Control(pDX, IDC_COMBO_DEPT, m_ctrDept);

       DDX_Control(pDX, IDC_COMBO_ABOUTPAY, m_ctrAboutPay);

       DDX_CBString(pDX, IDC_COMBO_ABOUTPAY, m_strAboutPay);

       DDX_CBString(pDX, IDC_COMBO_DEPT, m_strDept);

       DDX_CBString(pDX, IDC_COMBO_DUTY, m_strDuty);

       DDX_CBString(pDX, IDC_COMBO_EDUCATION, m_strEducation);

       DDX_CBString(pDX, IDC_COMBO_FOLK, m_strFolk);

       DDX_CBString(pDX, IDC_COMBO_ISWORKER, m_strIsWorker);

       DDX_CBString(pDX, IDC_COMBO_MARRY, m_strMarry);

       DDX_CBString(pDX, IDC_COMBO_POLITICAL, m_strPolitical);

       DDX_CBString(pDX, IDC_COMBO_SEX, m_strSex);

       DDX_CBString(pDX, IDC_COMBO_TECHNICAL, m_strTechnical);

       DDX_Text(pDX, IDC_EDIT_AGE, m_nAge);

       DDX_Text(pDX, IDC_EDIT_DEPT2, m_strDept2);

       DDX_Text(pDX, IDC_EDIT_DEPT3, m_strDept3);

       DDX_Text(pDX, IDC_EDIT_NAME, m_strName);

       DDX_Text(pDX, IDC_EDIT_NATIVE, m_strNative);

       DDX_Check(pDX, IDC_CHECK1, m_bType);

       //}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CSearchDlg, CDialog)

       //{{AFX_MSG_MAP(CSearchDlg)

       ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch)

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

// CSearchDlg message handlers

BOOL CSearchDlg::OnInitDialog()

{

       CDialog::OnInitDialog();

       //初始化员工列表///////////////////////////////////////////////////

       m_ctrList.InsertColumn(0,"员工号");

       m_ctrList.InsertColumn(1,"姓名");

       m_ctrList.InsertColumn(2,"性别");

       m_ctrList.InsertColumn(3,"生日");

       m_ctrList.InsertColumn(4,"年龄");

       m_ctrList.InsertColumn(5,"婚否");

       m_ctrList.InsertColumn(6,"职务");

       m_ctrList.InsertColumn(7,"职称");

       m_ctrList.InsertColumn(8,"职工类型");

       m_ctrList.InsertColumn(9,"工资类别");

       m_ctrList.InsertColumn(10,"文化程度");

       m_ctrList.InsertColumn(11,"政治面貌");

       m_ctrList.InsertColumn(12,"入职时间");

       RECT rect;

       m_ctrList.GetWindowRect(&rect);

       int wid = rect.right - rect.left;

       m_ctrList.SetColumnWidth(0,wid/13);

       m_ctrList.SetColumnWidth(1,wid/13);

       m_ctrList.SetColumnWidth(2,wid/13-15);

       m_ctrList.SetColumnWidth(3,wid/13+15);

       m_ctrList.SetColumnWidth(4,wid/13-15);

       m_ctrList.SetColumnWidth(5,wid/13-15);

       m_ctrList.SetColumnWidth(6,wid/13);

       m_ctrList.SetColumnWidth(7,wid/13);

       m_ctrList.SetColumnWidth(8,wid/13);

       m_ctrList.SetColumnWidth(9,wid/13);

       m_ctrList.SetColumnWidth(10,wid/13);

       m_ctrList.SetColumnWidth(11,wid/13);

       m_ctrList.SetColumnWidth(12,wid/13+15);

       m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

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

       //初始化查询条件中的ComboBox///////////////////////////////////////////////////////

       CString strSQL;

       //部门

       CDeptSet DeptSet ;

       strSQL="select * from dept";

       if(!DeptSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!DeptSet.IsEOF())

       {

              m_ctrDept.AddString(DeptSet.m_dept);

              DeptSet.MoveNext();

       }

       DeptSet.Close();

       //职工职务

       CDutySet DutySet ;

       strSQL="select * from duty";

       if(!DutySet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!DutySet.IsEOF())

       {

              m_ctrDuty.AddString(DutySet.m_duty);

              DutySet.MoveNext();

       }

       DutySet.Close();

       //职工职称

       CTechnicalSet TechnicalSet ;

       strSQL="select * from technical";

       if(!TechnicalSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!TechnicalSet.IsEOF())

       {

              m_ctrTechnical.AddString(TechnicalSet.m_technical);

              TechnicalSet.MoveNext();

       }

       TechnicalSet.Close();

       //职工类型

       CWorkerStatusSet WorkerStatusSet ;

       strSQL="select * from status";

       if(!WorkerStatusSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!WorkerStatusSet.IsEOF())

       {

              m_ctrIsWorker.AddString(WorkerStatusSet.m_workstatus);

              WorkerStatusSet.MoveNext();

       }

       WorkerStatusSet.Close();

       //工资类别

       CAboutPaySet AboutPaySet ;

       strSQL="select * from aboutpay";

       if(!AboutPaySet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!AboutPaySet.IsEOF())

       {

              m_ctrAboutPay.AddString(AboutPaySet.m_aboutpay);

              AboutPaySet.MoveNext();

       }

       AboutPaySet.Close();

       //职工民族

       CFolkSet FolkSet ;

       strSQL="select * from folk";

       if(!FolkSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!FolkSet.IsEOF())

       {

              m_ctrFolk.AddString(FolkSet.m_folk);

              FolkSet.MoveNext();

       }

       FolkSet.Close();

       //政治面貌

       CPoliticalSet PoliticalSet ;

       strSQL="select * from political";

       if(!PoliticalSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!PoliticalSet.IsEOF())

       {

              m_ctrPolitical.AddString(PoliticalSet.m_political);

              PoliticalSet.MoveNext();

       }

       PoliticalSet.Close();

       //文化程度

       CEducationSet EducationSet ;

       strSQL="select * from education";

       if(!EducationSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

       }    

       while(!EducationSet.IsEOF())

       {

              m_ctrEducation.AddString(EducationSet.m_education);

              EducationSet.MoveNext();

       }

       EducationSet.Close();   

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

       return TRUE;  // return TRUE unless you set the focus to a control

                     // EXCEPTION: OCX Property Pages should return FALSE

}

void CSearchDlg::OnButtonSearch()

{

       // TODO: Add your control notification handler code here

       UpdateData();

       CString strSQL;

       CString strTemp;

       CString strType;

       BOOL     bNoCondition = TRUE;

       //选择是否进行模糊查询

       if(m_bType)

              strType = " = ";

       else

              strType = " like ";

       //根据查询条件构造SQL语句///////////////////////////////////////////////

       strSQL = "select * from person where ";

       if(m_strAboutPay!="")

       {

              strTemp.Format(" aboutpay %s '%s' ",strType,m_strAboutPay);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strDept!="")

       {

              strTemp.Format(" dept %s '%s' ",strType,m_strDept);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strDuty!="")

       {

              strTemp.Format(" duty %s '%s' ",strType,m_strDuty);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strEducation!="")

       {

              strTemp.Format(" education %s '%s' ",strType,m_strEducation);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;      

       }

       if(m_strFolk!="")

       {

              strTemp.Format(" folk %s '%s' ",strType,m_strFolk);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strIsWorker!="")

       {

              strTemp.Format(" isworker %s '%s' ",strType,m_strIsWorker);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strMarry!="")

       {

              strTemp.Format(" ismarry %s '%s' ",strType,m_strMarry);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strPolitical!="")

       {

              strTemp.Format(" political %s '%s' ",strType,m_strPolitical);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strSex!="")

       {

              strTemp.Format(" sex %s '%s' ",strType,m_strSex);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strTechnical!="")

       {

              strTemp.Format(" technical %s '%s' ",strType,m_strTechnical);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_nAge>0)

       {

             

              strTemp.Format(" age = %d ",strType,m_nAge);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strDept2!="")

       {

              strTemp.Format(" dept2 %s '%s' ",strType,m_strDept2);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;      

       }

       if(m_strDept3!="")

       {

              strTemp.Format(" dept3 %s '%s' ",strType,m_strDept3);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strName!="")

       {

              strTemp.Format(" name %s '%s' ",strType,m_strName);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(m_strNative!="")

       {

              strTemp.Format(" native %s '%s' ",strType,m_strNative);

              if(!bNoCondition)

                     strSQL += " and ";

              strSQL += strTemp;

              bNoCondition = FALSE;

       }

       if(bNoCondition)

       {

              strSQL = "select * from person";

       }

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

//MessageBox(strSQL);

       m_ctrList.DeleteAllItems();

       m_ctrList.SetRedraw(FALSE);

       if(!m_PersonSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

       {

              MessageBox("打开数据库失败!","数据库错误",MB_OK);

              return ;

       }    

       char buffer[20];

       CString   strTime;

       int i=0;

       while(!m_PersonSet.IsEOF())

       {

              m_ctrList.InsertItem(i,m_PersonSet.m_ID);

              m_ctrList.SetItemText(i,1,m_PersonSet.m_name);

              m_ctrList.SetItemText(i,2,m_PersonSet.m_sex);

              strTime.Format("%d-%d-%d",m_PersonSet.m_birth.GetYear(),m_PersonSet.m_birth.GetMonth(),m_PersonSet.m_birth.GetDay());

              m_ctrList.SetItemText(i,3,strTime);

              _itoa(m_PersonSet.m_age,buffer,10);

              m_ctrList.SetItemText(i,4,buffer);

              m_ctrList.SetItemText(i,5,m_PersonSet.m_ismarry);

              m_ctrList.SetItemText(i,6,m_PersonSet.m_duty);

              m_ctrList.SetItemText(i,7,m_PersonSet.m_technical);

              m_ctrList.SetItemText(i,8,m_PersonSet.m_isworker);

              m_ctrList.SetItemText(i,9,m_PersonSet.m_aboutpay);

              m_ctrList.SetItemText(i,10,m_PersonSet.m_education);

              m_ctrList.SetItemText(i,11,m_PersonSet.m_political);

              strTime.Format("%d-%d-%d",m_PersonSet.m_date2.GetYear(),m_PersonSet.m_date2.GetMonth(),m_PersonSet.m_date2.GetDay());

              m_ctrList.SetItemText(i,12,strTime);

              i++;

              m_PersonSet.MoveNext();

       }

       m_PersonSet.Close();

       m_ctrList.SetRedraw(TRUE);

}

人事档案统计:

CStatDlg::CStatDlg(CWnd* pParent /*=NULL*/)

       : CDialog(CStatDlg::IDD, pParent)

{

       //{{AFX_DATA_INIT(CStatDlg)

       //}}AFX_DATA_INIT

}

void CStatDlg::DoDataExchange(CDataExchange* pDX)

{

       CDialog::DoDataExchange(pDX);

       //{{AFX_DATA_MAP(CStatDlg)

       DDX_Control(pDX, IDC_LIST2, m_ctrResult);

       DDX_Control(pDX, IDC_LIST1, m_ctrList);

       //}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CStatDlg, CDialog)

       //{{AFX_MSG_MAP(CStatDlg)

       ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

// CStatDlg message handlers

BOOL CStatDlg::OnInitDialog()

{

       CDialog::OnInitDialog();

       m_ctrList.InsertColumn(0,"统计类别");

       m_ctrList.SetColumnWidth(0,125);

       m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT);

       m_ctrList.InsertItem(0,"按性别统计");

       m_ctrList.InsertItem(1,"按年龄统计");

       m_ctrList.InsertItem(2,"按民族统计");

       m_ctrList.InsertItem(3,"按籍贯统计");

       m_ctrList.InsertItem(4,"按职务统计");

       m_ctrList.InsertItem(5,"按职称统计");

       m_ctrList.InsertItem(6,"按文化程度统计");

       m_ctrList.InsertItem(7,"按政治面貌统计");

       m_ctrList.InsertItem(8,"按部门统计");

       m_ctrList.InsertItem(9,"按职工类型统计");

       m_ctrList.InsertItem(10,"按工资类型统计");

       m_ctrList.InsertItem(11,"按婚姻状况统计");

       m_ctrResult.InsertColumn(0,"");

       m_ctrResult.SetColumnWidth(0,100);

       m_ctrResult.InsertColumn(1,"");

       m_ctrResult.SetColumnWidth(1,100);

       m_ctrResult.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

       return TRUE;  // return TRUE unless you set the focus to a control

                     // EXCEPTION: OCX Property Pages should return FALSE

void CStatDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)

{

       // TODO: Add your control notification handler code here

       CString strSQL;

       CString strValue="0";

       CDatabase db;

       db.Open(_T("Manager"));

       CRecordset recordset(&db);

       UpdateData(TRUE);

       //获得统计类型

       int nType = m_ctrList.GetSelectionMark();

       int i=0;

       switch(nType)

       {

       case 0://按性别统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

             

              m_ctrResult.InsertColumn(0,"性别");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,sex from person group by sex";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("sex",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 1://按年龄统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

             

              m_ctrResult.InsertColumn(0,"年龄");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,age from person group by age";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("age",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 2://按民族统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"民族");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,folk from person group by folk";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("folk",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 3://按籍贯统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"籍贯");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,native from person group by native";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("native",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 4://按职务类别统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"职务");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,duty from person group by duty";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("duty",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 5://按职称类别统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"职称");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,technical from person group by technical";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("technical",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 6://按文化程度统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"文化程度");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,education from person group by education";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("education",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 7://按政治面貌统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"政治面貌");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,political from person group by political";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("political",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 8://按所在部门统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"部门");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,dept from person group by dept";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("dept",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 9://按职工类型统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"职工类型");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,isworker from person group by isworker";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("isworker",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 10://按工资类型统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"工资类型");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,aboutpay from person group by aboutpay";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {    

                     recordset.GetFieldValue("aboutpay",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       case 11://按婚姻状况统计

              m_ctrResult.DeleteAllItems();

              m_ctrResult.DeleteColumn(1);

              m_ctrResult.DeleteColumn(0);

              m_ctrResult.InsertColumn(0,"婚姻状况");

              m_ctrResult.InsertColumn(1,"人数");

              m_ctrResult.SetColumnWidth(0,100);

              m_ctrResult.SetColumnWidth(1,100);

              strSQL="select count(ID) as num ,ismarry from person group by ismarry";

              if(!recordset.Open(CRecordset::forwardOnly,strSQL))

              {

                     MessageBox("打开数据库失败!","数据库错误",MB_OK);

                     return ;

              }

              while(!recordset.IsEOF())

              {     recordset.GetFieldValue("ismarry",strValue);

                     m_ctrResult.InsertItem(i,strValue);

                     recordset.GetFieldValue("num",strValue);

                     m_ctrResult.SetItemText(i,1,strValue);

                     i++;

                     recordset.MoveNext();

              }

              recordset.Close();  

              break;

       default:

              return;

       }

       UpdateData(FALSE);    

       *pResult = 0;}

五、流程图(或功能模块图)

顶层数据流图:

系统功能模块图

人事档案管理功能模块:

六、测试数据

浏览测试:

查询测试:

统计测试:

经测试本模块可以完美的完成设计要求。

七、调试过程中的问题

在人事档案管理模块调试中,我为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采取的方式是:

1、菜单项测试:为了保证每一项下拉菜单能够正确实现系统设计的功能,我把该企业有关人事的所有基础数据,基本上全部输入到本系统中,并对每一个菜单项反复进行了增加、删除、修改等操作,从而保证了菜单级功能的正确实现。

2、数据跟踪:完成菜单项测试后,我又对系统内的每一个数据进行了跟踪。

3、综合测试:在以上测试的基础上对系统功能进行了整体的测试,依次来检验系统功能是否符合系统设计的要求。

经过调试该系统没有发现什么大的问题,系统可以达到预期要求。

八、课程设计总结

终于到完成的阶段了,这是有始以来第一次做这样的作业,感觉很有意思。数据库是一门很实用的课程,也被广泛利用,我这次做的是人事管理设计。数据库系统设计大体分为需求分析、概念设计、逻辑设计、物理设计、实施阶段、调试测试等。比较重要的是需求分析阶段,因为无论做一 个什么软件都有他的用途,而他的用途就是给人民带来方便,也就是满足人们的需求,因此要做好一个软件首先要了解客户对他有什么要求,然后我们才知道自己要做些什么,要实现什么样的目的,当然这过程必须是真实的,我们不能自己捏造。

做完这次设计之后,我对数据库有了更深刻的了解,特别是Access,

     还有那些流程图,数据字典,关系模型等。同时也深刻的认识到了自己的不足,平常的时刻没觉的什么,可到要用到知识的时刻才知道自己什么都不懂,像那些基本的窗体有的还忘记怎么做,这说明了平常的不用心,还有表之间的关系建立中的连线,老是把主表搞错,还有对SQL语言的生疏,

     在这一次设计中我大部分用的都是Access,因为对SQL语言不懂,这也给我指出了问题所在,SQL是我学习的重点。

           总之,通过这一次设计我学到的太多了,对数据库也有了一个全新的认识。

相关推荐