⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basicinfo.cpp

📁 这是采用mfc编写的工资管理系统
💻 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 + -