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

📄 studentinfodlg.cpp

📁 基于指纹技术的学生考勤系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// StudentInfoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "FPSys.h"
#include "StudentInfoDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoDlg dialog
extern CString sID;
extern CString sAttendID;
extern int FromNameToID(CString tabName,CString attr,CString name);	//通过名字获得编号
extern CString FromIDToName(CString tabName,CString attr,int id);	//通过编号获得名字

CStudentInfoDlg::CStudentInfoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStudentInfoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStudentInfoDlg)
	m_strID = _T("");
	m_strName = _T("");
	m_strMemo = _T("");
	//}}AFX_DATA_INIT
}


void CStudentInfoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStudentInfoDlg)
	DDX_Control(pDX, IDC_LIST_STUDENTINFO, m_listStudentInfo);
	DDX_Control(pDX, IDC_COMBO_SSEX, m_cSSex);
	DDX_Control(pDX, IDC_COMBO_SDEPART, m_cSDepart);
	DDX_Control(pDX, IDC_COMBO_SCLASS, m_cSClass);
	DDX_Control(pDX, IDC_COMBO_CLASS, m_cClass);
	DDX_Control(pDX, IDC_COMBO_DEPART, m_cDepart);
	DDX_Control(pDX, IDC_COMBO_SEX, m_cSex);
	DDX_Text(pDX, IDC_EDIT_ID, m_strID);
	DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
	DDX_Text(pDX, IDC_EDIT_REMARK, m_strMemo);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStudentInfoDlg, CDialog)
	//{{AFX_MSG_MAP(CStudentInfoDlg)
	ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
	ON_BN_CLICKED(IDC_BTN_DEL, OnBtnDel)
	ON_BN_CLICKED(IDC_BTN_MATCH, OnBtnMatch)
	ON_BN_CLICKED(IDC_BTN_MOD, OnBtnMod)
	ON_CBN_SELCHANGE(IDC_COMBO_CLASS, OnSelchangeComboClass)
	ON_CBN_SELCHANGE(IDC_COMBO_DEPART, OnSelchangeComboDepart)
	ON_CBN_SELCHANGE(IDC_COMBO_SCLASS, OnSelchangeComboSclass)
	ON_CBN_SELCHANGE(IDC_COMBO_SDEPART, OnSelchangeComboSdepart)
	ON_CBN_SELCHANGE(IDC_COMBO_SEX, OnSelchangeComboSex)
	ON_CBN_SELCHANGE(IDC_COMBO_SSEX, OnSelchangeComboSsex)
	ON_NOTIFY(NM_CLICK, IDC_LIST_STUDENTINFO, OnClickListStudentinfo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoDlg message handlers

void CStudentInfoDlg::OnBtnAdd() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CString str;
	if(m_strID.IsEmpty()||m_strName.IsEmpty()||-1==m_cDepart.GetCurSel()||-1==m_cClass.GetCurSel())
	{
		MessageBox("请完整填写信息!");
		return;
	}
	if(m_strID.GetLength()>5)
	{
		MessageBox("你输入的编号的长度太长了。\r\n请输入长度小于6的编号!");
		m_strID.Empty();
		UpdateData(FALSE);
		return;
	}
	CString id,name,sex,depart,classes,memo;
	id=m_strID;		name=m_strName;		
	m_cSex.GetLBText(m_cSex.GetCurSel(),sex);
	//m_cDepart.GetLBText(m_cDepart.GetCurSel(),depart);
	m_cClass.GetLBText(m_cClass.GetCurSel(),classes);
	memo=_T(m_strMemo);
	int iClassID=FromNameToID("tab_Class","ClassName",classes);
	CString sClassID;
	sClassID.Format("%d",iClassID);
	CString departId=ReturnDepartID(sClassID);
//	MessageBox(departId);return;
	depart=FromIDToName("tab_Depart","DepartID",atoi(departId));
	
	InsertToDb(id,name,sex,depart,classes,memo);
	
	GetDlgItem(IDC_EDIT_ID)->SetWindowText("");
	GetDlgItem(IDC_EDIT_NAME)->SetWindowText("");
}

void CStudentInfoDlg::OnBtnDel() 
{
	// TODO: Add your control notification handler code here
	int nItem=m_listStudentInfo.GetNextItem(-1,LVNI_SELECTED);
	if(-1==nItem)
	{
		AfxMessageBox("请选择要删除的数据");
		return;
	}
	CString sql;
	int id;
	id=atoi(m_listStudentInfo.GetItemText(nItem,0));
	TRY{
		sql.Format("delete from tab_Student where sId=%d",m_PreID);
	
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		m_listStudentInfo.DeleteItem(nItem);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}

void CStudentInfoDlg::OnBtnMatch() 
{
	// TODO: Add your control notification handler code here
	CMatchDlg dlg;
	dlg.DoModal();
	
	if(strcmp(sAttendID,"")!=0 && strcmp(sID,"")!=0)
	{
		TRY{
			CString sql;
			sql.Format("update tab_Student Set AttendID='%s' where sId='%s'",sAttendID,sID);
			TRACE(sql);
			m_db.ExecuteSQL(sql);
			
			CString stemp;
			int i=0;
			while(i<m_listStudentInfo.GetItemCount())
			{
				stemp=m_listStudentInfo.GetItemText(i,0);
				if(strcmp(stemp,sID)==0)
					break;
				i++;
			}
			m_listStudentInfo.SetItemText(i,6,sAttendID);
		}
		CATCH(CDBException,ex)
		{
			AfxMessageBox(ex->m_strError);
			AfxMessageBox(ex->m_strStateNativeOrigin);
		}
		AND_CATCH(CMemoryException,pEx)
		{
			pEx->ReportError();
			AfxMessageBox("memory exception");
		}
		AND_CATCH(CException,e)
		{
			TCHAR szError[100];
			e->GetErrorMessage(szError,100);
			AfxMessageBox(szError);
		}
		END_CATCH
	}
}

void CStudentInfoDlg::OnBtnMod() 
{
	// TODO: Add your control notification handler code here
	if(!UpdateData())
		return;
	if(m_strID.IsEmpty())
		return;
	int nItem=m_listStudentInfo.GetNextItem(-1,LVNI_SELECTED);
	if(nItem==-1)
	{
		AfxMessageBox("没有选择要修改的信息!");
			return;
	}
	CString m_sPreID;
	m_sPreID.Format("%d",m_PreID);
	if(strcmp(m_strID,m_sPreID)!=0)
	{
		MessageBox("不能修改学号!");
		m_strID.Format("%d",m_PreID);
		UpdateData(FALSE);
		return;
	}
	int idepartId,iClassId;
	CString sex,departName,departId,className,classId,memo;
	m_cSex.GetLBText(m_cSex.GetCurSel(),sex);
	m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
	idepartId=FromNameToID("tab_Depart","DepartName",departName);//由系名转换成系编号
	departId.Format("%d",idepartId);
	m_cClass.GetLBText(m_cClass.GetCurSel(),className);
	iClassId=FromNameToID("tab_Class","ClassName",className);//由班级名称转换成班级编号
	classId.Format("%d",iClassId);

	CString sql;
	sql.Format("Update tab_Student set sName='%s',sSex='%s',ClassID='%s',"
			"Memo='%s' where sId=%d",m_strName,sex,classId,m_strMemo,m_PreID);
	TRY
	{
		TRACE(sql);
		m_db.ExecuteSQL(sql);
	//	InsertToItem(m_strID,m_strName,sex,departName,className,memo,"");
		CString m_sId;
		m_sId.Format("%d",m_PreID);
		m_listStudentInfo.SetItemText(m_iCurItem,0,m_sId);
		m_listStudentInfo.SetItemText(m_iCurItem,1,m_strName);
		m_listStudentInfo.SetItemText(m_iCurItem,2,sex);
		m_listStudentInfo.SetItemText(m_iCurItem,3,departName);
		m_listStudentInfo.SetItemText(m_iCurItem,4,className);
		m_listStudentInfo.SetItemText(m_iCurItem,5,m_strMemo);
		//m_listStudentInfo.SetItemText(m_iCurItem,6,);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}

void CStudentInfoDlg::OnSelchangeComboClass() 
{
	// TODO: Add your control notification handler code here
	
}

void CStudentInfoDlg::OnSelchangeComboDepart() 
{
	// TODO: Add your control notification handler code here
	CString departName;
	m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
	m_iDepFrm=1;
	RefreshClass(departName);
}

void CStudentInfoDlg::OnSelchangeComboSclass() 
{
	// TODO: Add your control notification handler code here
	
}

void CStudentInfoDlg::OnSelchangeComboSdepart() 
{
	// TODO: Add your control notification handler code here
	
}

void CStudentInfoDlg::OnSelchangeComboSex() 
{
	// TODO: Add your control notification handler code here
	
}

void CStudentInfoDlg::OnSelchangeComboSsex() 
{
	// TODO: Add your control notification handler code here
	
}

void CStudentInfoDlg::OnClickListStudentinfo(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int nItem=m_listStudentInfo.GetNextItem(-1,LVNI_SELECTED);
	m_iCurItem=nItem;
	if(nItem!=-1)
	{	
		CString id=m_listStudentInfo.GetItemText(nItem,0);
		m_PreID=atoi(id);
		sID=id;	//保存学号,用于匹配考勤号时之用
		GetDlgItem(IDC_EDIT_ID)->SetWindowText(id);
		
		CString name=m_listStudentInfo.GetItemText(nItem,1);
		GetDlgItem(IDC_EDIT_NAME)->SetWindowText(name);
		
		CString memo=m_listStudentInfo.GetItemText(nItem,5);
		GetDlgItem(IDC_EDIT_REMARK)->SetWindowText(memo);

		int i,iCount;
		CString sex=m_listStudentInfo.GetItemText(nItem,2);
		iCount=m_cSex.GetCount();
		for(i=0;i<iCount;i++)
		{
			CString str;
			m_cSex.GetLBText(i,str);

⌨️ 快捷键说明

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