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

📄 datamtnce.cpp

📁 一个在线考试系统的代码。功能包括考试科目管理
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// DataMtnce.cpp: implementation of the DataMtnce class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ExmOnline.h"
#include "DataMtnce.h"

#include "ADOConn.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

DataMtnce::DataMtnce()
{
	m_strSubject="";
	m_bHasLogged=FALSE;
	m_iTeacherID=0;
	m_iBlkNum=10;
	m_iQuestionID=0;
	m_iSlctNum=20;
	m_iStdntID=0;
	m_eUserType=user_none;
	m_iscore=0;

}

DataMtnce::~DataMtnce()
{
	
}



void DataMtnce::SetLogFlagTrue(int studentID)
{
	m_bHasLogged=TRUE;
	CString sql;
	sql.Format("update logstatus set 登录状态=%d where 学号=%d",m_bHasLogged,studentID);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.ExecuteSQL((_bstr_t)sql);
	Adoconn.ExitConnect();
}

BOOL DataMtnce::GetLogFlag(int studentID)
{
	if(studentID<0)
	{
		AfxMessageBox("请正确输入学号!");
	}
	else
	{
		CString sql;
		sql.Format("select * from logstatus where 学号=%d",studentID);
		ADOConn Adoconn;
		Adoconn.OnInitADOConn();
		Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
		if(Adoconn.m_pRecordset->adoEOF)
			m_bHasLogged=FALSE;
		else
		{
			int Flagtemp=atoi((char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("登录状态"));
			m_bHasLogged=Flagtemp;
		}
		Adoconn.ExitConnect();

		return m_bHasLogged;

	}
}

int DataMtnce::GetBlkNum(CString subject)
{
	CString sql;
	sql.Format("select * from titleamount where 科目名称='%s'",subject);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	CString strblknum=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("填空题数量");
	int Blknumtemp=atoi(strblknum);
	m_iBlkNum=Blknumtemp;
	Adoconn.ExitConnect();
	return m_iBlkNum;
}

void DataMtnce::SetLogFlagFalse(int studentID)
{
	m_bHasLogged=FALSE;
	CString sql;
	sql.Format("update logstatus set 登录状态=%d where 学号=%d",m_bHasLogged,studentID);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.ExecuteSQL((_bstr_t)sql);
	Adoconn.ExitConnect();
	
}

void DataMtnce::SetTchrID(int tchrID)
{
	//根据教师登录对话框中教师的ID号设置m_TeacherID
	m_iTeacherID=tchrID;
}

CString DataMtnce::GetPswd(int tchrID)
{
	//根据参数传进来的教师ID号,去数据库中查询该教师的登录密码并返回其值
	CString sql;
	sql.Format("select * from accttchrs where 教师ID=%d",tchrID);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	if(Adoconn.m_pRecordset->adoEOF)
		return "";
	CString pswtemp=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("密码");
	m_strTchrPsw=pswtemp;
	Adoconn.ExitConnect();

	return m_strTchrPsw;
}

void DataMtnce::SetUserTypeTchr()
{
	m_eUserType=user_tchr;
}
void DataMtnce::SetUserTypeStdnt()
{
	m_eUserType=user_stdnt;
}
void DataMtnce::SetUserTypeAdmin()
{
	m_eUserType=user_admin;
}
void DataMtnce::SetUserTypeNone()
{
	m_eUserType=user_none;
}
int DataMtnce::GetUserType()
{
	return m_eUserType;
}

void DataMtnce::SetSelSubjct(CComboBox *ctrsetsubject)
{
	//在要显示科目的下拉菜单中动态插入科目名称
	CString sql;
	sql.Format("select * from titleamount");
	CString subjecttemp;
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	while(!Adoconn.m_pRecordset->adoEOF)
	{
		subjecttemp=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("科目名称");
		ctrsetsubject->AddString(subjecttemp);
		Adoconn.m_pRecordset->MoveNext();
	}
	Adoconn.ExitConnect();


}

int DataMtnce::GetSelNum(CString subjcttemp)
{
	CString sql;
	sql.Format("select * from titleamount where 科目名称='%s'",subjcttemp);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	CString strselnum=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选择题数量");
	int Selnumtemp=atoi(strselnum);
	m_iSlctNum=Selnumtemp;
	Adoconn.ExitConnect();
	return m_iSlctNum;
}

void DataMtnce::SetSelNum(CString subjct,int num)
{
	if(num>GetQstionNum(subjct))
	{
		AfxMessageBox("对不起,您设置的题量大于题库中现有的题量\n题量已自动被设置为题库中的题目数的80%!\n您可以向题库中添加题目后再重新设置题量。");
		m_iSlctNum=(int)(0.8*GetQstionNum(subjct));
	}
	else
		m_iSlctNum=num;
	CString sql;
	sql.Format("update titleamount set 选择题数量=%d where 科目名称='%s'",m_iSlctNum,subjct);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.ExecuteSQL((_bstr_t)sql);
	Adoconn.ExitConnect();
}

void DataMtnce::SetBlkNum(CString subjct,int num)
{
	if(num>GetBlkQstionNum(subjct))
	{
		AfxMessageBox("对不起,您设置的题量大于题库中现有的题量\n题量已自动被设置为题库中的题目数的80%!\n您可以向题库中添加题目后再重新设置题量。");
		m_iBlkNum=(int)(0.8*GetBlkQstionNum(subjct));
	}
	else
		m_iBlkNum=num;
	CString sql;
	sql.Format("update titleamount set 填空题数量=%d where 科目名称='%s'",m_iBlkNum,subjct);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.ExecuteSQL((_bstr_t)sql);
	Adoconn.ExitConnect();
}

void DataMtnce::SetStdntID(int stdtid)
{
	//设置学生学号
	m_iStdntID=stdtid;
}

CString DataMtnce::GetSName(int sid)
{
	CString sql;
	sql.Format("select * from student where 学号=%d",sid);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	if(Adoconn.m_pRecordset->adoEOF)
		return "";
	CString nametemp=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("姓名");
	m_strStdntNm=nametemp;
	Adoconn.ExitConnect();
	return m_strStdntNm;
}

void DataMtnce::SSetSubjct(CString str)
{
	m_strSubject=str;
}

CString DataMtnce::SGetsubjct()
{
	return m_strSubject;
}

void DataMtnce::InitSelArr()
{
	m_iSelIDs=new int[m_iSlctNum];
	for(int i=0;i<m_iSlctNum;i++)
		m_iSelIDs[i]=0;
}

void DataMtnce::GeneratRandom(int *arr,int num)
{
	srand((unsigned int)time(NULL));
	for(int i=0;i<num;i++)
	{
		arr[i]=0;
	}
	int temp=0;
	int selbasenum=GetQstionNum(m_strSubject);
	for(i=0;i<num;i++)
	{
		while(!HaveGenerated(temp,arr))
			temp=rand()%selbasenum+1;
		arr[i]=temp;
	}

}

BOOL DataMtnce::HaveGenerated(int temp, int *titlenum)
{
	if(temp<=0)
		return false;
	int size=GetSelNum(m_strSubject);
	for(int i=0;i<size;i++)
	{
		if(temp==titlenum[i])
			return false;
	}
	return true;

}

int * DataMtnce::GetSelIDArr()
{
	return m_iSelIDs;
}

int DataMtnce::GetQstionNum(CString subjct)
{
	//根据科目名称查询题库,获取题库中的题量。
	int temp=0;
	CString sql;
	sql.Format("select * from titleamount where 科目名称='%s'",subjct);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	CString selbasename=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选择题库名称");
	sql.Format("select * from %s",selbasename);
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	while(!Adoconn.m_pRecordset->adoEOF)
	{
		temp++;
		Adoconn.m_pRecordset->MoveNext();
	}
	Adoconn.ExitConnect();
	return temp;
}

void DataMtnce::InitSqnceNum()
{
	m_iSelSqnce=0;
	m_iBlkSqnce=0;
	m_iJdgSqnce=0;
}

void DataMtnce::IncreaseSel()
{
	m_iSelSqnce+=1;
}

void DataMtnce::IncreaseBlk()
{
	m_iBlkSqnce+=1;
}

void DataMtnce::IncreaseJdg()
{
	m_iJdgSqnce+=1;
}

void DataMtnce::DecreaseSel()
{
	m_iSelSqnce-=1;	
}

void DataMtnce::DecreaseBlk()
{
	m_iBlkSqnce-=1;
}

void DataMtnce::DecreaseJdg()
{
	m_iJdgSqnce-=1;
}

int DataMtnce::GetSelSeqnce()
{
	return m_iSelSqnce;
}

int DataMtnce::GetBlkSeqnce()
{
	return m_iBlkSqnce;
}

int DataMtnce::GetJdgSeqnce()
{
	return m_iJdgSqnce;
}

CString DataMtnce::GetSelBase(CString subjct)
{
	CString sql;
	sql.Format("select * from titleamount where 科目名称='%s'",subjct);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	m_strSelBaseName=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选择题库名称");
	Adoconn.ExitConnect();
	return m_strSelBaseName;
}

CString DataMtnce::GetBlkBase(CString subjct)
{
	CString sql;
	sql.Format("select * from titleamount where 科目名称='%s'",subjct);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	m_strBlkBaseName=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("填空题库名称");
	Adoconn.ExitConnect();
	return m_strBlkBaseName;

}

CString DataMtnce::GetJdgBase(CString subjct)
{
	CString sql;
	sql.Format("select * from titleamount where 科目名称='%s'",subjct);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	m_strJdgBaseName=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("判断题库名称");
	Adoconn.ExitConnect();
	return m_strJdgBaseName;

}

CString DataMtnce::GetSelQstion(int idqstion)
{
	if (m_iSlctNum==0)
	{
		return "";
	}
	CString sql;
	sql.Format("select * from %s where 试题ID=%d",m_strSelBaseName,idqstion);
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
	m_strQstn=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("题目");
	Adoconn.ExitConnect();
	return m_strQstn;
}

int DataMtnce::GetSelID()
{
	return m_iSelIDs[m_iSelSqnce];
}

void DataMtnce::SetQstionTypeSel()
{
	m_eQstnType=sel;
}

void DataMtnce::SetQstionTypeBlk()
{
	m_eQstnType=blk;
}

void DataMtnce::SetQstionTypeJdg()

⌨️ 快捷键说明

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