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

📄 familymember.cpp

📁 这是采用mfc编写的工资管理系统
💻 CPP
字号:
// 
//
/*************************************
文件名:FamilyMember.cpp 
文件类型:implementation file
功能描述:对员工家庭成员的信息进行录入
创建人:张国
版本号:1.0
**************************************/

#include "stdafx.h"
#include "salarymanagement.h"
#include "FamilyMember.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#include "BasicInfo.h"

#ifndef _BASICINFO_H_
#define _BASICINFO_H_
#endif

/////////////////////////////////////////////////////////////////////////////
// CFamilyMember dialog


CFamilyMember::CFamilyMember(CWnd* pParent /*=NULL*/)
	: CDialog(CFamilyMember::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFamilyMember)
	m_name = _T("");
	m_department = _T("");
	m_relation = _T("");
	m_telephone = _T("");
	m_position = _T("");
	m_nID = _T("");
	m_employeeName = _T("");
	//}}AFX_DATA_INIT

	m_ado.OnInitADOConn();

	m_CurrentSelect=-1;
	char* str[]={"员工ID","姓名","与本人关系","工作单位","职务","政治面貌","联系电话"};
	for(int i=0;i<7;i++)
		m_propTitle[i]=str[i];
}

CFamilyMember::~CFamilyMember()
{
	m_ado.ExitConnect();
}

void CFamilyMember::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFamilyMember)
	DDX_Control(pDX, IDC_COMBO1, m_political);
	DDX_Control(pDX, IDC_LIST1, m_familyMember);
	DDX_Text(pDX, IDC_EDIT1, m_name);
	DDX_Text(pDX, IDC_DEPARTMENT, m_department);
	DDX_Text(pDX, IDC_RELATION, m_relation);
	DDX_Text(pDX, IDC_TELEPHONE, m_telephone);
	DDX_Text(pDX, IDC_POSITION, m_position);
	DDX_Text(pDX, IDC_NID, m_nID);
	DDX_Text(pDX, IDC_NAME, m_employeeName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFamilyMember, CDialog)
	//{{AFX_MSG_MAP(CFamilyMember)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList)
	ON_WM_SHOWWINDOW()
	ON_EN_KILLFOCUS(IDC_NID, OnKillfocusNid)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFamilyMember message handlers

BOOL CFamilyMember::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//设置列表控件的风格并初始化各列
	UINT width[]={100,100,100,200,100,100,100};//列表控件中各列的宽度
	m_personInfo.InitListCtrl(m_familyMember,m_propTitle,width,7);

	LoadData();

	m_political.AddString("党员");
	m_political.AddString("团员");
	m_political.AddString("群众");
	m_political.SetCurSel(0);

	m_CurrentRow=0;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CFamilyMember::OnCancel() 
{
	((CDialog*)this->GetParent()->GetOwner())->EndDialog(IDCANCEL);
	
	CDialog::OnCancel();
}

/***************************************
函数类型:事件响应函数
功能描述:响应点击“保存”按钮的消息,
		  对输入的员工家庭成员信息记录
***************************************/
void CFamilyMember::OnSave() 
{
	UpdateData();
	
	if(m_nID==""||m_relation=="")
	{
		AfxMessageBox("用户ID或和本人关系不能为空");
		return;
	}
	
	int index=m_political.GetCurSel();
	if(index<0)
	{
		MessageBox("请选择政治面貌,或自己填写");
		return;
	}
	
	CString political="";
	m_political.GetLBText(index,political);
	
	//主键属性结构体
	Prop main[2];
	main[0].name="员工ID";
	main[0].value=m_nID;
	main[1].name="与本人关系";
	main[1].value=m_relation;
	
	//非主键属性结构体
	Prop simple[5];
	char* str[]={"姓名","工作单位","职务","政治面貌","联系电话"};
	for(int i=0;i<5;i++)
		simple[i].name=str[i];
	
	simple[0].value=m_name;
	simple[1].value=m_department;
	simple[2].value=m_position;
	simple[3].value=political;
	simple[4].value=m_telephone;
	
	//保存记录
	m_personInfo.SavePersonData("FamilyMember",main,2,simple,5);
	
	LoadData();
	//清除编辑框中的数据
	m_nID="";
	m_name="";
	m_relation="";
	m_department="";
	m_position="";
	m_telephone="";
	
	UpdateData(FALSE);
	m_CurrentRow++;
}

/***************************************************
函数类型:事件响应函数
功能描述:响应鼠标点击列表控件件后的操作
		  将点击行的数据反馈到编辑框和组合框控件上
***************************************************/
void CFamilyMember::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	//获得鼠标点击的行号
	int nItem=pNMListView->iItem;
	m_CurrentSelect=nItem;

    //将对应行中各列的数据反馈到编辑框和组合框控件上
	CString political;
	m_nID=m_familyMember.GetItemText(nItem,0);
	m_name=m_familyMember.GetItemText(nItem,1);
	m_relation=m_familyMember.GetItemText(nItem,2);
	m_department=m_familyMember.GetItemText(nItem,3);
	m_position=m_familyMember.GetItemText(nItem,4);
	political=m_familyMember.GetItemText(nItem,5);
	m_telephone=m_familyMember.GetItemText(nItem,6);

	int index=m_political.FindString(0,political);
	m_political.SetCurSel(index);

	UpdateData(FALSE);

	*pResult = 0;
}

/*******************************************
函数类型:自定义函数
功能描述:将数据库中的数据显示到列表控件中
*******************************************/

void CFamilyMember::LoadData()
{
	m_personInfo.LoadData(m_familyMember,m_propTitle,7,"FamilyMember");
}

/***********************************
函数类型:事件响应函数
功能描述:响应鼠标点击“删除”按钮
		  删除对应记录
***********************************/
void CFamilyMember::OnDelete() 
{
	UpdateData();

	if(m_familyMember.GetSelectedCount()==0||m_CurrentSelect>=m_familyMember.GetItemCount())
	{
		AfxMessageBox("请选择您要删除的记录!");
		return;
	}
	
    if(IDNO==AfxMessageBox("您确定要删除该记录吗?",MB_YESNO))
		return;
	try{
		//按主键删除,其中数据库中的主键为员工ID和与本人关系
		CString sql="";
		sql.Format("Delete From FamilyMember Where 员工ID='%s' and 与本人关系='%s'",m_nID,m_relation);
		
		m_ado.ExecuteSQL(sql);
		
		m_familyMember.DeleteItem(m_CurrentSelect);
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
	}
}

/***************************************************
函数类型:事件响应函数
功能描述:响应鼠标点击列表控件件后的操作
		  如果点击行没有记录,则清空编辑框中的数据
***************************************************/
void CFamilyMember::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// 单击列表控件时空白行时,清空各输入编辑框中的已有数据
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

	//获得鼠标点击的行号
	int nItem=pNMListView->iItem;
	if (nItem==-1)
	{
		m_nID="";
		m_name="";
		m_relation="";
		m_department="";
		m_position="";
		m_telephone="";
		UpdateData(false);
	}
	*pResult = 0;
}

void CFamilyMember::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	if(bShow)
	{
		m_nID=CBasicInfo::s_nID;
		UpdateData(FALSE);
	}
}

void CFamilyMember::OnKillfocusNid() 
{
	UpdateData();
	
	m_personInfo.OnKillfocusEdit(m_nID,m_employeeName);

	UpdateData(FALSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -