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

📄 user.cpp

📁 vc在线考试系统源码
💻 CPP
字号:
// User.cpp : Implementation of CUser
#include "stdafx.h"
#include "UserInfo.h"
#include "User.h"

/////////////////////////////////////////////////////////////////////////////
// CUser


STDMETHODIMP CUser::get_Username(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrUsername;
	return S_OK;
}

STDMETHODIMP CUser::put_Username(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrUsername=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_Password(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrPassword;
	return S_OK;
}

STDMETHODIMP CUser::put_Password(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrPassword=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_Name(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrName;
	return S_OK;
}

STDMETHODIMP CUser::put_Name(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrName=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_School(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrSchool;
	return S_OK;
}

STDMETHODIMP CUser::put_School(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrSchool=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_Department(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrDepartment;
	return S_OK;
}

STDMETHODIMP CUser::put_Department(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrDepartment=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_Class(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrClass;
	return S_OK;
}

STDMETHODIMP CUser::put_Class(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrClass=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_Email(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrEmail;
	return S_OK;
}

STDMETHODIMP CUser::put_Email(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrEmail=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_StudentNO(BSTR *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_bstrStudentNO;
	return S_OK;
}

STDMETHODIMP CUser::put_StudentNO(BSTR newVal)
{
	// TODO: Add your implementation code here
	m_bstrStudentNO=newVal;
	return S_OK;
}

STDMETHODIMP CUser::get_UserID(long *pVal)
{
	// TODO: Add your implementation code here
	*pVal=m_UserID;
	return S_OK;
}

STDMETHODIMP CUser::put_UserID(long newVal)
{
	// TODO: Add your implementation code here
	m_UserID=newVal;
	return S_OK;
}

STDMETHODIMP CUser::CheckValid(int x_nType,BSTR x_No, BSTR x_Password, BSTR *x_Success)
{
	// TODO: Add your implementation code here
	if(FAILED(pConn.CreateInstance(__uuidof(Connection))))
	{
		*x_Success = ::SysAllocString(L"Couldn't create connection component");
		return S_OK;
	}

	CComBSTR m_bstrSql;

	switch(x_nType)
	{
	case 0:
		m_bstrSql.Append("SELECT SID FROM STUDENTACCOUNT WHERE USERNAME='");
		break;
	case 1:
		m_bstrSql.Append("SELECT TID FROM TEACHERACCOUNT WHERE USERNAME='");
		break;
	default:
		*x_Success=::SysAllocString(L"the type does not exist");
		return S_OK;
	}

	m_bstrSql.AppendBSTR(x_No);
	m_bstrSql.Append("' AND PASSWORD='");
	m_bstrSql.AppendBSTR(x_Password);
	m_bstrSql.Append("'");

	//if (FAILED(pConn->Open("Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Data Source=202.112.113.114;Initial Catalog=EXAM","","",-1)))
	if (FAILED(pConn->Open("Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)))
	{
		*x_Success = ::SysAllocString(L"Couldn't open connection");
		return S_OK;
	}

	CComVariant m_varNumber;
	_bstr_t m_bstrTemp(m_bstrSql,FALSE);

	//pRs = pConn->Execute(m_bstrSql, &m_varNumber, -1);
	pRs = pConn->Execute(m_bstrTemp, &m_varNumber, -1);

	if (m_varNumber.lVal == 0)
	{
		*x_Success = ::SysAllocString(L"Couldn't find records!");
		return S_OK;
	}
	
	CComVariant m_varData;

	switch(x_nType)
	{
	case 0:
		pRs->Fields->GetItem("SID")->get_Value(&m_varData);
		break;
	case 1:
		pRs->Fields->GetItem("TID")->get_Value(&m_varData);
		break;
	default:
		return S_OK;
	}
	m_UserID = m_varData.iVal;

	*x_Success = ::SysAllocString(L"Y");

	m_bExist = TRUE;

	return S_OK;

}

STDMETHODIMP CUser::GetUserInfo(int x_nType, int x_UID, BSTR *x_UserInfo)
{
	// TODO: Add your implementation code here
	
	if (FAILED(pConn.CreateInstance(__uuidof(Connection))))
	{
		*x_UserInfo = ::SysAllocString(L"N#Couldn't create connection component!");
		return S_OK;
	}

	if (FAILED(pConn->Open("Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)))
	{
		*x_UserInfo = ::SysAllocString(L"N#Couldn't open connection!");
		return S_OK;
	}

	char m_strBuf[10];
	_itoa(x_UID, m_strBuf, 10);
	
	CComBSTR m_bstrSql;
	switch(x_nType)
	{
	case 0:
		m_bstrSql.Append("SELECT * FROM STUDENTACCOUNT WHERE SID=");
		break;
	case 1:
		m_bstrSql.Append("SELECT * FROM TEACHERACCOUNT WHERE TID=");
		break;
	default:
		*x_UserInfo=::SysAllocString(L"The Type does not exist.");
		return S_OK;
	}
	m_bstrSql.Append(m_strBuf);

	_bstr_t m_bstrResult(m_bstrSql,FALSE);
	

	CComVariant m_varNum;

	pRs = pConn->Execute(m_bstrResult, &m_varNum, -1);
	/*
	if (m_varNum.lVal == 0)
	{
		*x_nScore = 0;
		return S_OK;
	}
	*/
	if (pRs->ADOEOF)
	{
		*x_UserInfo = ::SysAllocString(L"N#Couldn't find records!");
		return S_OK;
	}

	CComVariant m_varData;
	CComBSTR m_bstrInfo;
	m_bstrInfo.Append("Y#");

	pRs->GetFields()->GetItem("USERNAME")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrUsername.Empty();
		m_bstrUsername.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");
	

	pRs->GetFields()->GetItem("PASSWORD")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrPassword.Empty();
		m_bstrPassword.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");

	pRs->GetFields()->GetItem("NAME")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrName.Empty();
		m_bstrName.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");

	pRs->GetFields()->GetItem("SCHOOL")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrSchool.Empty();
		m_bstrSchool.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");

	pRs->GetFields()->GetItem("DEPARTMENT")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrDepartment.Empty();
		m_bstrDepartment.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");


	if(x_nType==0)
	{
		pRs->GetFields()->GetItem("STUDENTNO")->get_Value(&m_varData);
		if(m_varData.vt = VT_BSTR)
		{
			m_bstrInfo.AppendBSTR(m_varData.bstrVal );
			m_bstrStudentNO.AppendBSTR(m_varData.bstrVal);
		}
		m_bstrInfo.Append("#");

		pRs->GetFields()->GetItem("CLASS")->get_Value(&m_varData);
		if(m_varData.vt = VT_BSTR)
		{
			m_bstrInfo.AppendBSTR(m_varData.bstrVal );
			m_bstrClass.Empty();
			m_bstrClass.AppendBSTR(m_varData.bstrVal);
		}
		m_bstrInfo.Append("#");
	}
	if(x_nType==1)
	{
		pRs->GetFields()->GetItem("EMAIL")->get_Value(&m_varData);
		if(m_varData.vt = VT_BSTR)
		{
			m_bstrInfo.AppendBSTR(m_varData.bstrVal );
			m_bstrClass.Empty();
			m_bstrClass.AppendBSTR(m_varData.bstrVal);
		}
		m_bstrInfo.Append("#");
	}

	*x_UserInfo = m_bstrInfo;

	pRs->Close();
	pConn->Close();

	return S_OK;
}

STDMETHODIMP CUser::InsertUserInfo(int x_nType,int *x_Success)
{
	// TODO: Add your implementation code here
	if(FAILED(pConn.CreateInstance(__uuidof(Connection))))
	{
		*x_Success=-1;
		return S_OK;
	}
	if(FAILED(pConn->Open("Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)))
	{
		*x_Success=-1;
		return S_OK;
	}
	CComBSTR m_bstrSQL;

	switch(x_nType)
	{
	case 0:
		m_bstrSQL.Append("Insert into STUDENTACCOUNT(");
		break;
	case 1:
		m_bstrSQL.Append("Insert into TEACHERACCOUNT(");
		break;
	default:
		*x_Success=-1;
		return S_OK;
	}
	CComBSTR m_bstrTemp;

	m_bstrTemp.Append("values(");




	m_bstrSQL.Append("Username,password,Name");
	m_bstrTemp.Append("'");
	m_bstrTemp.AppendBSTR(m_bstrUsername);
	m_bstrTemp.Append("','");
	m_bstrTemp.AppendBSTR(m_bstrPassword);
	m_bstrTemp.Append("','");
	m_bstrTemp.AppendBSTR(m_bstrName);
	m_bstrTemp.Append("'");
	m_bstrTemp.Append(")");
	m_bstrSQL.Append(")");
	m_bstrSQL.AppendBSTR(m_bstrTemp);
	
	_bstr_t  m_bstrResult(m_bstrSQL,FALSE);

	CComVariant m_varNum;
	HRESULT hr=pConn->Execute(m_bstrResult,&m_varNum,-1);
	if(FAILED(hr))
	{
		*x_Success=-1;
		return S_OK;
	}

	m_bstrSQL.Empty();

	switch(x_nType)
	{
	case 0:
		m_bstrSQL.Append("UPDATE STUDENTACCOUNT SET School=");
		break;
	case 1:
		m_bstrSQL.Append("UPDATE TEACHERACCOUNT SET School=");
		break;
	default:
		*x_Success=-1;
		return S_OK;
	}
	m_bstrSQL.Append("'");
	m_bstrSQL.AppendBSTR(m_bstrSchool);
	m_bstrSQL.Append("',");
	m_bstrSQL.Append("Department='");
	m_bstrSQL.AppendBSTR(m_bstrDepartment);
	m_bstrSQL.Append("',");


	switch(x_nType)
	{
	case 0:
		m_bstrSQL.Append("CLASS='");
		m_bstrSQL.AppendBSTR(m_bstrClass);
		m_bstrSQL.Append("',");
		m_bstrSQL.Append("StudentNO='");
		m_bstrSQL.AppendBSTR(m_bstrStudentNO);
		m_bstrSQL.Append("'");
		break;
	case 1:
	    m_bstrSQL.Append("EMAIL='");
		m_bstrSQL.AppendBSTR(m_bstrEmail);
		m_bstrSQL.Append("'");
		break;
	default:
		*x_Success=-1;
		return S_OK;
	}
	
	m_bstrSQL.Append("  WHERE Name=");
	m_bstrSQL.Append("'");
	m_bstrSQL.AppendBSTR(m_bstrName);
	m_bstrSQL.Append("'");
	

    _bstr_t m_bstrResult1(m_bstrSQL,FALSE);
	hr=pConn->Execute(m_bstrResult1,&m_varNum,-1);
	if(FAILED(hr))
	{
		*x_Success=-1;
		return S_OK;
	}
	*x_Success=1;
	return S_OK;
}

STDMETHODIMP CUser::DeleteUserInfo(int x_nType,int x_UID, BSTR *x_Success)
{
	// TODO: Add your implementation code here
	if(FAILED(pConn.CreateInstance(__uuidof(Connection))))
	{
		*x_Success=::SysAllocString(L"Create Instance error");
		return S_OK;
	}
	if(FAILED(pConn->Open("Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)))
	{
		*x_Success=::SysAllocString(L"Open Connection error");
		return S_OK;
	}
	CComBSTR m_bstrSQL;
	char	m_charUID[10];
	_itoa(x_UID,m_charUID,10);

	switch(x_nType)
	{
		case 0:
			m_bstrSQL.Append("delete STUDENTACCOUNT where SID=");
			break;
		case 1:
			m_bstrSQL.Append("delete TEACHERACCOUNT where TID=");
			break;
		default:
			*x_Success=::SysAllocString(L"type does not exist");
			return S_OK;
	}
	m_bstrSQL.Append(m_charUID);
	_bstr_t m_bstrResult(m_bstrSQL,FALSE);
	CComVariant m_varNum;
	pConn->Execute(m_bstrResult,&m_varNum,-1);
	if(m_varNum.lVal!=1)
	{
		*x_Success=::SysAllocString(L"delete operation doesn't succeed");
		return S_OK;
	}
	pConn->Close();
	return S_OK;
}

STDMETHODIMP CUser::GetUser(int x_nType,BSTR x_mUsername)
{
	// TODO: Add your implementation code here
	if (FAILED(pConn.CreateInstance(__uuidof(Connection))))
	{
		return S_OK;
	}

	if (FAILED(pConn->Open("Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)))
	{
		
		return S_OK;
	}

//	char m_strBuf[10];
//	_itoa(x_UID, m_strBuf, 10);
	
	CComBSTR m_bstrSql;
	switch(x_nType)
	{
	case 0:
		m_bstrSql.Append("SELECT * FROM STUDENTACCOUNT WHERE USERNAME=");
		break;
	case 1:
		m_bstrSql.Append("SELECT * FROM TEACHERACCOUNT WHERE USERNAME=");
		break;
	default:
	
		return S_OK;
	}
	m_bstrSql.Append("'");
	m_bstrSql.AppendBSTR(x_mUsername);
	m_bstrSql.Append("'");

	_bstr_t m_bstrResult(m_bstrSql,FALSE);
	

	CComVariant m_varNum;

	pRs = pConn->Execute(m_bstrResult, &m_varNum, -1);
	
	if (pRs->ADOEOF)
	{
	
		return S_OK;
	}

	CComVariant m_varData;
	CComBSTR m_bstrInfo;
	m_bstrInfo.Append("Y#");
	

	pRs->GetFields()->GetItem("PASSWORD")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrPassword.Empty();
		m_bstrPassword.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");

	pRs->GetFields()->GetItem("NAME")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrName.Empty();
		m_bstrName.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");

	pRs->GetFields()->GetItem("SCHOOL")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrSchool.Empty();
		m_bstrSchool.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");

	pRs->GetFields()->GetItem("DEPARTMENT")->get_Value(&m_varData);
	if(m_varData.vt = VT_BSTR)
	{
		m_bstrInfo.AppendBSTR(m_varData.bstrVal );
		m_bstrDepartment.Empty();
		m_bstrDepartment.AppendBSTR(m_varData.bstrVal);
	}
	m_bstrInfo.Append("#");


	if(x_nType==0)
	{
		pRs->GetFields()->GetItem("STUDENTNO")->get_Value(&m_varData);
		if(m_varData.vt = VT_BSTR)
		{
			m_bstrInfo.AppendBSTR(m_varData.bstrVal );
			m_bstrStudentNO.AppendBSTR(m_varData.bstrVal);
		}
		m_bstrInfo.Append("#");

		pRs->GetFields()->GetItem("SID")->get_Value(&m_varData);
		m_UserID=m_varData.lVal ;
		m_bstrInfo.Append("#");

		pRs->GetFields()->GetItem("CLASS")->get_Value(&m_varData);
		if(m_varData.vt = VT_BSTR)
		{
			m_bstrInfo.AppendBSTR(m_varData.bstrVal );
			m_bstrClass.Empty();
			m_bstrClass.AppendBSTR(m_varData.bstrVal);
		}
		m_bstrInfo.Append("#");
	}
	if(x_nType==1)
	{
		pRs->GetFields()->GetItem("EMAIL")->get_Value(&m_varData);
		if(m_varData.vt = VT_BSTR)
		{
			m_bstrInfo.AppendBSTR(m_varData.bstrVal );
			m_bstrClass.Empty();
			m_bstrClass.AppendBSTR(m_varData.bstrVal);
		}
		m_bstrInfo.Append("#");

		pRs->GetFields()->GetItem("TID")->get_Value(&m_varData);
		m_UserID=m_varData.lVal ;
		m_bstrInfo.Append("#");
	}

	pRs->Close();
	pConn->Close();

	return S_OK;

}

⌨️ 快捷键说明

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