中南民族大学计算机科学学院
Windows系统编程
课程设计报告
题 目: 人事管理系统
(人事档案管理设计)
专 业 自动化
学 生 姓 名 段广帅
班 级 学 号 1班 08064009
完 成 日 期 2010年12月29日
指 导 教 师 郑波俊 程鹏
一、课题名称
人事管理系统
(人事档案管理设计)
二、课题内容和要求
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是我学习的重点。
总之,通过这一次设计我学到的太多了,对数据库也有了一个全新的认识。
摘要人事管理是企业管理中的一个重要内容随着时代的进步企业也逐渐变得庞大起来如何管理好企业内部员工的信息成为企业管理中的一个大问题在…
SQLServer网络数据库及其应用课程设计人事管理信息系统1SQServer网络数据库及其应用课程设计报告一项目的名称人事管理信…
湖南文理学院数据库课程设计报告设计题目:人事管理系统学生姓名:系别:计算机学院专业:班级:学号:指导教师:同组同学:课程设计任务书…
人事管理系统设计报告系别电子技术系专业电子信息工程姓名指导教员20xx年6月26日目录1课程设计的目的和要求22内容321系统分析…
人事管理系统面向对象的编程技术课程设计实验报告班级软件131姓名徐浪学号13907416指导老师汤亚玲设计时间20xx5101应用…
Windows程序设计实践总结报告班级姓名学号任课教师一功能介绍1用户验证用户通过系统登陆窗体输入相应的账户和密码通过验证的用户可…
Windows体系及编程实验指导书实验一类Windows进程任务管理器实验实验名称进程管理实验实验类型设计性实验学时4适用对象软件…
附件3科技学院课程设计综合实验报告2020年度第学期名称Windows体系编程题目院系信息工程系班级软件09k2学号学生姓名闫雪峰…
Windows编程实验报告1GDI图形程序设计姓名专业学号框架窗口程序和20xx3241Windows编程实验报告1Windows…
Windows程序设计实验报告实验一绘图和绘钟实验二简易扫雷程序班级姓名学号班内序号时间20xx54实验一绘图和绘钟一实验要求利用…
1系统描述及数据流图系统介绍人力资源管理系统是这样的一种管理软件它能够快速方便地显示结果还可以对有关工资的各种信息进行统计服务于财…