📄 student.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( <ime );
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 + -