📄 basicinfo.cpp
字号:
/******************************************
文件名: BasicInfo.cpp
文件类型:implementation file
功能描述:录入员工的基本信息
创建人:张国
版本号:1.0
******************************************/
#include "stdafx.h"
#include "SalaryManagement.h"
#include "SalaryManagementDlg.h"
#include "BasicInfo.h"
#include "ADOConn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBasicInfo dialog
//静态变量,用来存放员工ID,供增加员工经历等时使用
CString CBasicInfo::s_nID = _T("");
/**************************
函数类型:构造函数
功能描述:对变量进行初始化
**************************/
CBasicInfo::CBasicInfo(CWnd* pParent /*=NULL*/)
: CDialog(CBasicInfo::IDD, pParent)
{
//{{AFX_DATA_INIT(CBasicInfo)
m_graduate = _T("");
m_name = _T("");
m_profession = _T("");
m_staffID = _T("");
m_telnum = _T("");
m_workTelnum = _T("");
m_dateParty = COleDateTime::GetCurrentTime();
m_dateBegin = COleDateTime::GetCurrentTime();
m_dateBorn = COleDateTime::GetCurrentTime();
m_dateEnd = COleDateTime::GetCurrentTime();
m_jiguan = _T("");
m_address = _T("");
//}}AFX_DATA_INIT
m_ado.OnInitADOConn();
}
CBasicInfo::~CBasicInfo()
{
m_ado.ExitConnect();
}
/*************************************
功能描述:完成控件与关联变量的数据交换
*************************************/
void CBasicInfo::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBasicInfo)
DDX_Control(pDX, IDC_CBOPOS, m_cboPos);
DDX_Control(pDX, IDC_CBODEP, m_cboDep);
DDX_Control(pDX, IDC_CBOPOLITICS, m_cboPolitics);
DDX_Control(pDX, IDC_CBOBARGAIN, m_cboBargain);
DDX_Control(pDX, IDC_CBORESIDENCE, m_cboResidence);
DDX_Control(pDX, IDC_CBOCULTURE, m_cboCulture);
DDX_Control(pDX, IDC_CBOSEX, m_cboSex);
DDX_Control(pDX, IDC_CBOMERRY, m_cboMerry);
DDX_Control(pDX, IDC_CBONATION, m_cboNation);
DDX_Control(pDX, IDC_CBOWORKSTATE, m_cboWorkState);
DDX_Text(pDX, IDC_GRADUATE, m_graduate);
DDX_Text(pDX, IDC_NAME, m_name);
DDX_Text(pDX, IDC_PERSONALID, m_personalID);
DDX_Text(pDX, IDC_PROFESSION, m_profession);
DDX_Text(pDX, IDC_STAFFID, m_staffID);
DDX_Text(pDX, IDC_TELNUM, m_telnum);
DDX_Text(pDX, IDC_WORKTELNUM, m_workTelnum);
DDX_DateTimeCtrl(pDX, IDC_DATEPARTY, m_dateParty);
DDX_DateTimeCtrl(pDX, IDC_DATEBEGIN, m_dateBegin);
DDX_DateTimeCtrl(pDX, IDC_DATEBORN, m_dateBorn);
DDX_DateTimeCtrl(pDX, IDC_DATEEND, m_dateEnd);
DDX_Text(pDX, IDC_JIGUAN, m_jiguan);
DDX_Text(pDX, IDC_ADDRESS, m_address);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBasicInfo, CDialog)
//{{AFX_MSG_MAP(CBasicInfo)
ON_BN_CLICKED(IDC_QUIT, OnQuit)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_SAVE, OnSave)
ON_CBN_SELCHANGE(IDC_CBODEP, OnSelchangeCbodep)
ON_EN_CHANGE(IDC_STAFFID, OnChangeStaffid)
ON_EN_CHANGE(IDC_GRADUATE, OnChangeGraduate)
ON_EN_CHANGE(IDC_PERSONALID, OnChangePersonalid)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBasicInfo message handlers
extern CSalaryManagementApp theApp;
/********************
功能描述:推出该窗口
********************/
void CBasicInfo::OnQuit()
{
CDialog::OnCancel();
((CDialog*)this->GetParent()->GetOwner())->EndDialog(IDCANCEL);
}
/************************
功能描述:浏览并显示照片
************************/
void CBasicInfo::OnBrowse()
{
//读入照片
CFileDialog dlg(TRUE,"jpg","*.jpg",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"JPEG文件(*.jpg,*.jpeg,*.jpe)|*.jpg;*.jpeg;*.jpe|BMP文件(*.bmp,*.rle,*.dib)|*.bmp;*.rle;*.dib|GIF文件(*.gif)|*.gif||",NULL);
if(dlg.DoModal()==IDOK)
{
CString m_Path=dlg.GetPathName();
CDC *pDC=GetDC();
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
if (file.Open(m_Path,CFile::modeRead)&&file.GetStatus(m_Path,fstatus)&& ((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
}
}
}
IPicture *pPic;
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
CRect rect;
GetDlgItem(IDC_PICTURE)->GetWindowRect(rect);
ScreenToClient(rect);
double fX,fY;
// fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
// fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
fX=(double)rect.Width();
fY=(double)rect.Height();
if(FAILED(pPic->Render(*pDC,rect.left,rect.top,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("渲染图像失败!");
pPic->Release();
pStm->Release();
pPic->Release();
}
else
AfxMessageBox("从流中装载图像失败!");
}
}
/**************************
函数类型:消息处理函数
功能描述:对对话框进行初始化
**************************/
BOOL CBasicInfo::OnInitDialog()
{
CDialog::OnInitDialog();
//初始化各组合框
m_cboSex.AddString("男");
m_cboSex.AddString("女");
m_cboSex.SetCurSel(0);
m_cboNation.AddString("汉族");
m_cboNation.AddString("蒙古族");
m_cboNation.AddString("回族");
m_cboNation.AddString("藏族");
m_cboNation.AddString("维吾尔族");
m_cboNation.AddString("苗族");
m_cboNation.AddString("彝族");
m_cboNation.AddString("壮族");
m_cboNation.AddString("布依族");
m_cboNation.AddString("朝鲜族");
m_cboNation.AddString("满族");
m_cboNation.AddString("侗族");
m_cboNation.AddString("瑶族");
m_cboNation.AddString("土家族");
m_cboNation.AddString("白族");
m_cboNation.AddString("哈尼族");
m_cboNation.AddString("哈萨克族");
m_cboNation.AddString("傣族");
m_cboNation.AddString("黎族");
m_cboNation.AddString("高山族");
m_cboNation.AddString("佤族");
m_cboNation.AddString("土族");
m_cboNation.AddString("羌族");
m_cboNation.SetCurSel(0);
m_cboMerry.AddString("未婚");
m_cboMerry.AddString("已婚");
m_cboMerry.AddString("离婚");
m_cboMerry.SetCurSel(0);
m_cboCulture.AddString("初中");
m_cboCulture.AddString("中专");
m_cboCulture.AddString("高中");
m_cboCulture.AddString("专科");
m_cboCulture.AddString("本科");
m_cboCulture.AddString("硕士");
m_cboCulture.AddString("博士");
m_cboCulture.SetCurSel(0);
m_cboResidence.AddString("城市");
m_cboResidence.AddString("农村");
m_cboResidence.SetCurSel(0);
m_cboPolitics.AddString("团员");
m_cboPolitics.AddString("预备党员");
m_cboPolitics.AddString("党员");
m_cboPolitics.AddString("群众");
m_cboPolitics.SetCurSel(0);
m_cboWorkState.AddString("在职");
m_cboWorkState.AddString("离职");
m_cboWorkState.AddString("退休");
m_cboWorkState.SetCurSel(0);
m_cboBargain.AddString("合同制");
m_cboBargain.AddString("聘用制");
m_cboBargain.AddString("临时");
m_cboBargain.SetCurSel(0);
try{
//在数据库中读出所有的部门,并在部门组合框中显示
CString sql="Select 部门名称 From DepartmentSet Order By 部门名称 DESC";
m_recordset=m_ado.GetRecordSet(sql);
m_cboDep.ResetContent();
CString str,temp="";
while(!m_recordset->adoEOF)
{
str=(LPCTSTR)_bstr_t(m_recordset->GetCollect("部门名称"));
m_recordset->MoveNext();
if(temp==str)
continue;
m_cboDep.AddString(str);
temp=str;
}
m_cboDep.SetCurSel(0);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
//根据部门显示该部门的所有职位
OnSelchangeCbodep() ;
return TRUE;
}
/******************************
函数类型:自定义函数
功能描述:对设置的信息进行保存
******************************/
void CBasicInfo::OnSave()
{
UpdateData();
try{
CString sql;
sql.Format("Select * From BasicInfomation Where 员工ID='%s'",m_staffID);
m_recordset=m_ado.GetRecordSet(sql);
//如果员工ID不存在,则增加一条新的记录,否则更改已存在的记录
if(m_recordset->adoEOF)
{
m_recordset->AddNew();
m_recordset->PutCollect("员工ID",_variant_t(m_staffID));
}
//获得组合框中的数据
CString sex,nation,residence,politics,workState,culture,bargain,merry;
m_cboSex.GetLBText(m_cboSex.GetCurSel(),sex);
m_cboNation.GetLBText(m_cboNation.GetCurSel(),nation);
m_cboResidence.GetLBText(m_cboNation.GetCurSel(),residence);
m_cboMerry.GetLBText(m_cboMerry.GetCurSel(),merry);
m_cboPolitics.GetLBText(m_cboPolitics.GetCurSel(),politics);
m_cboCulture.GetLBText(m_cboCulture.GetCurSel(),culture);
m_cboBargain.GetLBText(m_cboBargain.GetCurSel(),bargain);
m_cboWorkState.GetLBText(m_cboWorkState.GetCurSel(),workState);
m_cboDep.GetLBText(m_cboDep.GetCurSel(),m_department);
m_cboPos.GetLBText(m_cboPos.GetCurSel(),m_position);
//将所有信息写入数据库
m_recordset->PutCollect("员工姓名",(_variant_t)m_name);
m_recordset->PutCollect("性别",(_variant_t)sex);
m_recordset->PutCollect("出生日期",(_variant_t)m_dateBorn.Format("%Y %m %d"));
m_recordset->PutCollect("民族",(_variant_t)nation);
m_recordset->PutCollect("入党时间",(_variant_t)m_dateParty.Format("%Y %m %d"));
m_recordset->PutCollect("户口",(_variant_t)residence);
m_recordset->PutCollect("籍贯",(_variant_t)m_jiguan);
m_recordset->PutCollect("婚姻状况",(_variant_t)merry);
m_recordset->PutCollect("身份证号",(_variant_t)m_personalID);
m_recordset->PutCollect("政治面貌",(_variant_t)politics);
m_recordset->PutCollect("文化程度",(_variant_t)culture);
m_recordset->PutCollect("毕业院校",(_variant_t)m_graduate);
m_recordset->PutCollect("专业",(_variant_t)m_profession);
m_recordset->PutCollect("职位",(_variant_t)m_position);
m_recordset->PutCollect("部门名称",(_variant_t)m_department);
m_recordset->PutCollect("合同类型",(_variant_t)bargain);
m_recordset->PutCollect("起始时间",(_variant_t)m_dateBegin.Format("%Y %m %d"));
m_recordset->PutCollect("终止时间",(_variant_t)m_dateEnd.Format("%Y %m %d"));
m_recordset->PutCollect("岗位电话",(_variant_t)m_workTelnum);
m_recordset->PutCollect("工作状况",(_variant_t)workState);
m_recordset->PutCollect("家庭住址",(_variant_t)m_address);
m_recordset->PutCollect("联系电话",(_variant_t)m_telnum);
//编辑框复位,即清空所有的编辑框
m_name="";
m_jiguan="";
m_personalID="";
m_graduate="";
m_profession="";
m_workTelnum="";
m_address="";
m_telnum="";
//更新数据库
m_recordset->Update();
}
catch(_com_error e)
{
MessageBox(e.Description());
}
catch(...)
{
MessageBox("无法显示的错误");
}
UpdateData(FALSE);
}
/**********************************************
函数类型:消息处理函数
功能描述:当部门组合框中数据的选择发生变化时,
职位组合框中的可选数据也应随之而改变
**********************************************/
void CBasicInfo::OnSelchangeCbodep()
{
int index=m_cboDep.GetCurSel();
if(index==-1)
{
MessageBox("没有部门和职位信息,\n请先在“基本设置”中添加部门和职位");
return;
}
CString depName;
m_cboDep.GetLBText(index,depName);
try
{
CString sql;
sql.Format("Select 职位 From DepartmentSet Where 部门名称='%s'",depName);
m_recordset=m_ado.GetRecordSet(sql);
//当部门发生变化时,对应的职位要全部更新
m_cboPos.ResetContent();
if(m_recordset->adoEOF)
{
MessageBox("没有职位信息;\n请先在“基本信息”中添加职位信息");
return;
}
while(!m_recordset->adoEOF)
{
_variant_t posName=(_bstr_t)m_recordset->GetCollect("职位");
if(posName!=(_variant_t)"000000")
m_cboPos.AddString(_bstr_t(posName));
m_recordset->MoveNext();
}
m_cboPos.SetCurSel(0);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
void CBasicInfo::OnChangeStaffid()
{
UpdateData();
s_nID=m_staffID;
}
void CBasicInfo::OnChangeGraduate()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
void CBasicInfo::OnChangePersonalid()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -