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

📄 teacher.cpp

📁 我上载了那么多怎么都说已经有上载的啦
💻 CPP
字号:
// Teacher.cpp: implementation of the CTeacher class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GPMIS.h"
#include "Teacher.h"
#include "Global.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern CGPMISApp theApp;

CTeacher::CTeacher() : 	m_strName("")
{
}

CTeacher::CTeacher(const CString& strName, const CString& strSex, int nTitleID, 
				   const CString& strPhone, const CString& strEMail, const CString& strExperience) 
: m_strName(strName), m_strSex(strSex), m_nTitleID(nTitleID), m_strPhone(strPhone), 
m_strEMail(strEMail), m_strExperience(strExperience)
{
}

CTeacher::~CTeacher()
{

}

CTeacher::CTeacher(const CTeacher& rhs)
{
	*this = rhs;
}

CTeacher& CTeacher::operator = (const CTeacher& rhs)
{
	m_strName = rhs.m_strName;
	m_strSex = rhs.m_strSex;
	m_nTitleID = rhs.m_nTitleID;
	m_strPhone = rhs.m_strPhone;
	m_strEMail = rhs.m_strEMail;
	m_strExperience = rhs.m_strExperience;

	return *this;
}

/// create/update a record
BOOL CTeacher::Create(BOOL bUpdate)
{
	CString			strSQL;
	CString			strTableName;
	_RecordsetPtr   pSet;
		
	FieldsPtr		pFields;
	FieldPtr		pField;
	
	_variant_t		vConn,vRowsAffected;
	CString			strTmep;


	vConn = (IDispatch*)theApp.GetConnect();
	pSet.CreateInstance(__uuidof(Recordset));

	strTableName.Format("Teacher");

	time_t ltime;
	time( &ltime );

	switch(theApp.GetDBType())
	{
	case MSACCESS_DB:
	default:
		if( bUpdate )
			strSQL.Format("select * from %s where name='%s'", 
				strTableName, m_strName);
		else
			strSQL.Format("select * from %s",  strTableName);
		break;
	case SQLSERVER_DB:
		if( bUpdate )
			strSQL.Format("select * from %s where name='%s'", 
				strTableName, m_strName);
		else
			strSQL.Format("select * from %s",  strTableName);
		break;
	}
	try
	{
		pSet->Open((_variant_t)strSQL,vConn,adOpenStatic,adLockOptimistic,adCmdUnknown);

		if( !bUpdate )  //Create
		{
			pSet->AddNew();
		}

		pFields			= pSet->Fields;
		pField			= pFields->Item["Name"];
		strTmep.Format("%s",GetName());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["Sex"];
		strTmep.Format("%s",GetSex());
		pField->Value	= (_bstr_t)strTmep;

		pFields			= pSet->Fields;
		pField			= pFields->Item["TitleID"];
		strTmep.Format("%d",GetTitleID());
		pField->Value	= (_bstr_t)strTmep;

		pFields			= pSet->Fields;
		pField			= pFields->Item["Phone"];
		strTmep.Format("%s",GetPhone());
		pField->Value	= (_bstr_t)strTmep;

		pFields			= pSet->Fields;
		pField			= pFields->Item["EMail"];
		strTmep.Format("%s",GetEMail());
		pField->Value	= (_bstr_t)strTmep;

		pFields			= pSet->Fields;
		pField			= pFields->Item["Experience"];
		strTmep.Format("%s",GetExperience());
		pField->Value	= (_bstr_t)strTmep;

		if( m_strPassword.GetLength() > 16 )
		{
			pFields			= pSet->Fields;
			pField			= pFields->Item["Password"];
			strTmep.Format("%s",m_strPassword);
			pField->Value	= (_bstr_t)strTmep;
		}

		pSet->Update(); 
		pSet->Close();
		
	}
	catch( _com_error& ce )
	{
		_bstr_t bstrDescription( ce.Description() );
		_bstr_t bstrSource( ce.Source() );
		TRACE( "HRESULT = 0x%08lx\n", ce.Error() );
		TRACE( "HRESULT description : %s\n", ce.ErrorMessage() );
		TRACE( "Description : %s\n", (LPCTSTR)bstrDescription );
		TRACE( "Source : %s\n", (LPCTSTR)bstrSource );
		return FALSE;
	}

	if( !bUpdate )  //Create
	{
		CString strWhere;
	}

	return TRUE;
}

// static method
CTeacher CTeacher::CreateInst(CString strWhere)
{
	char			strSql[256];
	CString			strTableName;
	_RecordsetPtr   pTeacherSet;
		
	FieldsPtr		pFields;
	FieldPtr		pField;
	
	_variant_t		vConn,vRowsAffected;
	_variant_t		vtName, vtTitle;
	_variant_t		vtPhone, vtSex;
	_variant_t		vtEMail, vtExperience;

	CTeacher		teacher;


	vConn = (IDispatch*)theApp.GetConnect();
	pTeacherSet.CreateInstance(__uuidof(Recordset));

	try
	{
		strTableName.Format("Teacher");

		switch(theApp.GetDBType())
		{
		case SQLSERVER_DB:
			sprintf(strSql,"select * from %s where %s",	strTableName, strWhere);
			break;
		case MSACCESS_DB:
		default:
			sprintf(strSql,"select * from %s where %s",	strTableName, strWhere);
			break;
		}
		
		pTeacherSet->Open( strSql, vConn, adOpenStatic, adLockOptimistic, adCmdUnknown );

		CString strName;
		CString strSex;
		int nTitleID;
		CString strPhone;
		CString strEMail;
		CString strExperience;

		if ( VARIANT_FALSE == pTeacherSet->ADOEOF )
		{
			vtName = pTeacherSet->GetCollect( _variant_t("Name") );
			if( vtName.vt != VT_NULL )
			{
				vtName.ChangeType( VT_BSTR );
				strName = vtName.bstrVal;
				strName.TrimRight();
			}
			else
				strName = "";
			
			vtTitle = pTeacherSet->GetCollect( _variant_t("titleid") );
			vtTitle.ChangeType( VT_BSTR );
			nTitleID = vtTitle.iVal;
			
			vtSex = pTeacherSet->GetCollect( _variant_t("Sex") );
			if( vtSex.vt != VT_NULL )
			{
				vtSex.ChangeType( VT_BSTR );
				strSex = vtSex.bstrVal;
				strSex.TrimRight();
			}
			else
				strSex = "";

			vtPhone = pTeacherSet->GetCollect( _variant_t("Phone") );
			if( vtPhone.vt != VT_NULL )
			{
				vtPhone.ChangeType( VT_BSTR );
				strPhone = vtPhone.bstrVal;
				strPhone.TrimRight();
			}
			else
				strPhone = "";

			vtEMail = pTeacherSet->GetCollect( _variant_t("EMail") );
			if( vtEMail.vt != VT_NULL )
			{
				vtEMail.ChangeType( VT_BSTR );
				strEMail = vtEMail.bstrVal;
				strEMail.TrimRight();
			}
			else
				strEMail = "";

			vtExperience = pTeacherSet->GetCollect( _variant_t("Experience") );
			if( vtExperience.vt != VT_NULL )
			{
				vtExperience.ChangeType( VT_BSTR );
				strExperience = vtExperience.bstrVal;
				strExperience.TrimRight();
			}
			else
				strExperience = "";
			
			teacher = CTeacher(strName, strSex, nTitleID, strPhone, strEMail, strExperience);
		}
		else
		{
			teacher = CTeacher();
		}

		pTeacherSet->Close();
	}
	catch( _com_error& ce )
	{
		_bstr_t bstrDescription( ce.Description() );
		_bstr_t bstrSource( ce.Source() );
		TRACE( "Description : %s\n", (LPCTSTR)bstrDescription );
		TRACE( "Source : %s\n", (LPCTSTR)bstrSource );
		return CTeacher();
	}

	return teacher;
}

BOOL CTeacher::Create(CTeacher& teacher)
{
	return teacher.Create();
}

BOOL CTeacher::Update(CTeacher& teacher)
{
	return teacher.Create(TRUE);
}

BOOL CTeacher::Delete(CTeacher& teacher)
{
	CString			strSQL;
	_variant_t		vRowsAffected;
	CString			strTableName;

	strTableName.Format("Teacher");

	switch(theApp.GetDBType())
	{
	case MSACCESS_DB:
	default:
		strSQL.Format("delete * from %s where Name='%s'",
					strTableName, teacher.GetName());
		break;
	case SQLSERVER_DB:
		strSQL.Format("delete * from %s where Name='%s'",
					strTableName, teacher.GetName());
		break;
	}
	try
	{
		theApp.GetConnect()->Execute( (_bstr_t)strSQL, &vRowsAffected, adCmdText );

	}
	catch( _com_error& ce )
	{
		_bstr_t bstrDescription( ce.Description() );
		_bstr_t bstrSource( ce.Source() );
		TRACE( "HRESULT = 0x%08lx\n", ce.Error() );
		TRACE( "HRESULT description : %s\n", ce.ErrorMessage() );
		TRACE( "Description : %s\n", (LPCTSTR)bstrDescription );
		TRACE( "Source : %s\n", (LPCTSTR)bstrSource );
		return FALSE;
	}

	return TRUE;
}

BOOL CTeacher::Validate(const CString& strLoginName, CString strPassword)
{
	BYTE *pData;
	CBlowfish* pBlowfish = theApp.GetBlowfish();

	pData = new BYTE[17];
	memset(pData, 0, 16*sizeof(BYTE));
	memcpy(pData,strPassword,strPassword.GetLength());

	pBlowfish->Encrypt(pData, 16);

	CString s;
	strPassword = "";
	for(int i = 0; i< 16; i++)
	{
		s.Format("%03d",pData[i]);
		strPassword += s;
	}
	delete pData;

	CString strWhere;
	strWhere.Format(" name='%s' and password='%s'",strLoginName,strPassword);
	CTeacher teacher = CreateInst(strWhere);

	if( teacher.GetName() == "" )
		return FALSE;
	return TRUE;
}

void CTeacher::SetPassword(CString& sPassword)
{
	BYTE *pData;
	CBlowfish* pBlowfish = theApp.GetBlowfish();

	pData = new BYTE[17];
	memset(pData, 0, 16*sizeof(BYTE));
	memcpy(pData,sPassword,sPassword.GetLength());

	pBlowfish->Encrypt(pData, 16);

	CString s;
	m_strPassword = "";
	for(int i = 0; i< 16; i++)
	{
		s.Format("%03d",pData[i]);
		m_strPassword += s;
	}
	delete pData;
}

⌨️ 快捷键说明

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