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

📄 student.cpp

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

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

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

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

CStudent::CStudent() : m_nID(0), m_nYear(2000), m_strNumber("")
{
}

CStudent::CStudent(int nID, int nYear, const CString& strNumber, const CString& strClass, 
				   const CString& strName, const CString& strSex, const CString& strTeacher, 
				   const CString& strContact, const CString& strDistrict) 
: m_nID(nID), m_nYear(nYear), m_strNumber(strNumber), m_strClass(strClass),
  m_strName(strName), m_strSex(strSex), m_strTeacher(strTeacher),
  m_strContact(strContact), m_strDistrict(strDistrict)
{
}

CStudent::~CStudent()
{

}

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

CStudent& CStudent::operator = (const CStudent& rhs)
{
	m_nID = rhs.m_nID;
	m_nYear = rhs.m_nYear;
	m_strClass = rhs.m_strClass;
	m_strNumber = rhs.m_strNumber;
	m_strName = rhs.m_strName;
	m_strSex = rhs.m_strSex;
	m_strTeacher = rhs.m_strTeacher;
	m_strContact = rhs.m_strContact;
	m_strDistrict = rhs.m_strDistrict;

	m_strPlace = rhs.m_strPlace;

	return *this;
}

/// create/update a record
BOOL CStudent::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("Student");

	time_t ltime;
	time( &ltime );

	switch(theApp.GetDBType())
	{
	case MSACCESS_DB:
	default:
		if( bUpdate )
			strSQL.Format("select * from %s where 序号=%d and 届=%d and 学号='%s'", 
				strTableName, m_nID, m_nYear, m_strNumber);
		else
			strSQL.Format("select * from %s",  strTableName);
		break;
	case SQLSERVER_DB:
		if( bUpdate )
			strSQL.Format("select * from %s where 序号=%d and 届=%d and 学号='%s'", 
				strTableName, m_nID, m_nYear, m_strNumber);
		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["序号"];
		strTmep.Format("%d",GetID());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["届"];
		strTmep.Format("%d",GetYear());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["学号"];
		strTmep.Format("%s",GetNumber());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["班级"];
		strTmep.Format("%s",GetClass());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["姓名"];
		strTmep.Format("%s",GetName());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["性别"];
		strTmep.Format("%s",GetSex());
		pField->Value	= (_bstr_t)strTmep;

		pFields			= pSet->Fields;
		pField			= pFields->Item["指导老师"];
		strTmep.Format("%s",GetTeacher());
		pField->Value	= (_bstr_t)strTmep;

		pFields			= pSet->Fields;
		pField			= pFields->Item["联系方式"];
		strTmep.Format("%s",GetContact());
		pField->Value	= (_bstr_t)strTmep;

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

		pFields			= pSet->Fields;
		pField			= pFields->Item["上机地点"];
		strTmep.Format("%s",GetPlace());
		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
CStudent CStudent::CreateInst(CString strWhere)
{
	char			strSql[256];
	CString			strTableName;
	_RecordsetPtr   pStudentSet;
		
	FieldsPtr		pFields;
	FieldPtr		pField;
	
	_variant_t		vConn,vRowsAffected;
	_variant_t		vtID, vtYear;
	_variant_t		vtName, vtNumber;
	_variant_t		vtClass, vtSex;
	_variant_t		vtTeacher, vtContact;
	_variant_t		vtDistrict, vtPlace;

	CStudent		Student;


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

	try
	{
		strTableName.Format("Student");

		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;
		}
		
		pStudentSet->Open( strSql, vConn, adOpenStatic, adLockOptimistic, adCmdUnknown );

		int nID;
		int nYear;
		CString strNumber;
		CString strName;
		CString strClass;
		CString strSex;
		CString strTeacher;
		CString strContact;
		CString strDistrict;
		CString strPlace;

		if ( VARIANT_FALSE == pStudentSet->ADOEOF )
		{
			vtID = pStudentSet->GetCollect( _variant_t("序号") );
			vtID.ChangeType( VT_I2 );
			nID = vtID.iVal;

			vtYear = pStudentSet->GetCollect( _variant_t("届") );
			vtYear.ChangeType( VT_I2 );
			nYear = vtYear.iVal;

			vtNumber = pStudentSet->GetCollect( _variant_t("学号") );
			if( vtNumber.vt != VT_NULL )
			{
				vtNumber.ChangeType( VT_BSTR );
				strNumber = vtNumber.bstrVal;
				strNumber.TrimRight();
			}
			else
				strNumber = "";

			vtName = pStudentSet->GetCollect( _variant_t("姓名") );
			if( vtName.vt != VT_NULL )
			{
				vtName.ChangeType( VT_BSTR );
				strName = vtName.bstrVal;
				strName.TrimRight();
			}
			else
				strName = "";
			
			vtClass = pStudentSet->GetCollect( _variant_t("班级") );
			if( vtClass.vt != VT_NULL )
			{
				vtClass.ChangeType( VT_BSTR );
				strClass = vtClass.bstrVal;
				strClass.TrimRight();
			}
			else
				strClass = "";
			
			vtSex = pStudentSet->GetCollect( _variant_t("性别") );
			if( vtSex.vt != VT_NULL )
			{
				vtSex.ChangeType( VT_BSTR );
				strSex = vtSex.bstrVal;
				strSex.TrimRight();
			}
			else
				strSex = "";

			vtTeacher = pStudentSet->GetCollect( _variant_t("指导老师") );
			if( vtTeacher.vt != VT_NULL )
			{
				vtTeacher.ChangeType( VT_BSTR );
				strTeacher = vtTeacher.bstrVal;
				strTeacher.TrimRight();
			}
			else
				strTeacher = "";

			vtContact = pStudentSet->GetCollect( _variant_t("联系方式") );
			if( vtContact.vt != VT_NULL )
			{
				vtContact.ChangeType( VT_BSTR );
				strContact = vtContact.bstrVal;
				strContact.TrimRight();
			}
			else
				strContact = "";

			vtDistrict = pStudentSet->GetCollect( _variant_t("地区") );
			if( vtDistrict.vt != VT_NULL )
			{
				vtDistrict.ChangeType( VT_BSTR );
				strDistrict = vtDistrict.bstrVal;
				strDistrict.TrimRight();
			}
			else
				strDistrict = "";

			vtPlace = pStudentSet->GetCollect( _variant_t("上机地点") );
			if( vtPlace.vt != VT_NULL )
			{
				vtPlace.ChangeType( VT_BSTR );
				strPlace = vtPlace.bstrVal;
				strPlace.TrimRight();
			}
			else
				strPlace = "";

			Student = CStudent(nID, nYear, strNumber, strClass, strName, strSex, strTeacher, strContact, strDistrict);
			Student.SetPlace(strPlace);
		}
		else
		{
			Student = CStudent();
		}

		pStudentSet->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 CStudent();
	}

	return Student;
}

BOOL CStudent::Create(CStudent& student)
{
	return student.Create();
}

BOOL CStudent::Update(CStudent& student)
{
	return student.Create(TRUE);
}

BOOL CStudent::Delete(const CString& strWhere)
{
	CString			strSQL;
	_variant_t		vRowsAffected;
	CString			strTableName;

	strTableName.Format("Student");

	switch(theApp.GetDBType())
	{
	case MSACCESS_DB:
	default:
		strSQL.Format("delete * from %s where %s", strTableName, strWhere);
		break;
	case SQLSERVER_DB:
		strSQL.Format("delete * from %s where %s", strTableName, strWhere);
		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 CStudent::Delete(CStudent& student)
{
	CString strWhere;

	strWhere.Format("序号=%d and 届=%d and 学号='%s'", student.GetID(), student.GetYear(), student.GetNumber());
	return Delete(strWhere);
}

⌨️ 快捷键说明

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