📄 datamtnce.cpp
字号:
// 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 + -