📄 datamtnce.cpp
字号:
}
void DataMtnce::WriteJdgResult()
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",SGetsubjct());
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString resultbasename=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("学生答题结果库");
sql.Format("select * from %s where 学号=%d and 题目ID=%d and 题型=%d",resultbasename,m_iStdntID,GetJdgID(),m_eQstnType);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
if (Adoconn.m_pRecordset->adoEOF)
{
sql.Format("insert into %s values(%d,'%s',%d,%d,'%s','%s','%s',%d)",resultbasename,m_iStdntID,m_strStdntNm,m_eQstnType,GetJdgID(),m_strQstn,m_strQstnAns,m_strSAns,CheckJdgResult());
Adoconn.ExecuteSQL((_bstr_t)sql);
}
else
{
sql.Format("update %s set 学生答案='%s',是否正确=%d where 学号=%d and 题目ID=%d and 题型=%d",resultbasename,m_strSAns,CheckJdgResult(),m_iStdntID,GetJdgID(),m_eQstnType);
Adoconn.ExecuteSQL((_bstr_t)sql);
}
Adoconn.ExitConnect();
}
BOOL DataMtnce::CheckJdgResult()
{
if (m_strQstnAns==m_strSAns && !m_strSAns.IsEmpty())
{
//m_iscore+=1;
return TRUE;
}
else
return FALSE;
}
int DataMtnce::GetSJudgement()
{
return m_iSJudgementArr[m_iJdgSqnce];
}
CString DataMtnce::GetResult()
{
m_iscore=CalRightNum();
m_strInfoNotify.Format("本次考试各类题型共计%d题,您答对了%d题!",m_iSlctNum+m_iBlkNum+m_iJdgNum,m_iscore);
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",SGetsubjct());
ADOConn Adoconn;
Adoconn.OnInitADOConn();
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString resultbase=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("学生成绩库");
sql.Format("insert into %s values(%d,'%s',%d,%d,%f)",resultbase,m_iStdntID,m_strStdntNm,m_iscore,m_iSlctNum+m_iBlkNum+m_iJdgNum,m_iscore/(float)(m_iSlctNum+m_iBlkNum+m_iJdgNum));
Adoconn.ExecuteSQL((_bstr_t)sql);
Adoconn.ExitConnect();
return m_strInfoNotify;
}
void DataMtnce::SetLogFlag(int Stdntid)
{
m_bHasLogged=TRUE;
CString sql;
sql.Format("insert into logstatus values(%d,%d)",Stdntid,m_bHasLogged);
ADOConn Adoconn;
Adoconn.OnInitADOConn();
Adoconn.ExecuteSQL((_bstr_t)sql);
Adoconn.ExitConnect();
}
void DataMtnce::InitTime(int itime)
{
m_iTotalTime=itime;
m_iHour=itime/3600;
itime=itime%3600;
m_iMinute=itime/60;
m_iSecond=itime%60;
}
BOOL DataMtnce::CountDown()
{
if(m_iTotalTime==0)
return FALSE;
else
{
m_iTotalTime--;
if(m_iSecond!=0)
{
m_iSecond--;
}
else if(m_iSecond==0 && m_iMinute!=0)
{
m_iMinute--;
m_iSecond=59;
}
else if(m_iSecond==0 && m_iMinute==0 && m_iHour!=0)
{
m_iHour--;
m_iMinute=59;
m_iSecond=59;
}
return TRUE;
}
}
int DataMtnce::GetHour()
{
return m_iHour;
}
int DataMtnce::GetMinute()
{
return m_iMinute;
}
int DataMtnce::GetSecond()
{
return m_iSecond;
}
int DataMtnce::ReadTime()
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from timeleft where 学号=%d",m_iStdntID);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
if(Adoconn.m_pRecordset->adoEOF)
{
sql.Format("select * from titleamount where 科目名称='%s'",SGetsubjct());
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
m_iTotalTime=atoi((char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("考试时间"));
}
else
{
m_iTotalTime=atoi((char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("剩余时间"));
}
return m_iTotalTime;
}
int DataMtnce::GetTotalTime()
{
return m_iTotalTime;
}
int DataMtnce::GetBlkQstionNum(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 blkbasename=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("填空题库名称");
sql.Format("select * from %s",blkbasename);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
while(!Adoconn.m_pRecordset->adoEOF)
{
temp++;
Adoconn.m_pRecordset->MoveNext();
}
Adoconn.ExitConnect();
return temp;
}
void DataMtnce::SetJdgNum(CString subjct, int num)
{
if(num>GetJdgQstionNum(subjct))
{
AfxMessageBox("对不起,您设置的题量大于题库中现有的题量\n题量已自动被设置为题库中的题目数的80%!\n您可以向题库中添加题目后再重新设置题量。");
m_iJdgNum=(int)(0.8*GetJdgQstionNum(subjct));
}
else
m_iJdgNum=num;
CString sql;
sql.Format("update titleamount set 判断题数量=%d where 科目名称='%s'",m_iJdgNum,subjct);
ADOConn Adoconn;
Adoconn.OnInitADOConn();
Adoconn.ExecuteSQL((_bstr_t)sql);
Adoconn.ExitConnect();
}
int DataMtnce::GetJdgQstionNum(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 jdgbasename=(char*)(_bstr_t)Adoconn.m_pRecordset->GetCollect("判断题库名称");
sql.Format("select * from %s",jdgbasename);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
while(!Adoconn.m_pRecordset->adoEOF)
{
temp++;
Adoconn.m_pRecordset->MoveNext();
}
Adoconn.ExitConnect();
return temp;
}
void DataMtnce::SetTotalTime(CString subjct, int itime)
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("update titleamount set 考试时间=%d where 科目名称='%s'",itime*60,subjct);
Adoconn.ExecuteSQL((_bstr_t)sql);
Adoconn.ExitConnect();
}
int DataMtnce::ReadTotalTime(CString subjct)
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",subjct);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
int temp=atoi((char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("考试时间"));
Adoconn.ExitConnect();
return temp/60;
}
void DataMtnce::SetAdminID(int adminid)
{
m_iAdminID=adminid;
}
CString DataMtnce::ReadAdminPswd(int adminid)
{
//根据参数传进来的管理员ID号,去数据库中查询该管理员的登录密码并返回其值
CString sql;
sql.Format("select * from adminaccount where 管理员ID=%d",adminid);
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_strAdminPswd=pswtemp;
Adoconn.ExitConnect();
return m_strAdminPswd;
}
int DataMtnce::GetRecordNum(CString base)
{
int i=0;
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from %s",base);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
while(!Adoconn.m_pRecordset->adoEOF)
{
i++;
Adoconn.m_pRecordset->MoveNext();
}
Adoconn.ExitConnect();
return i;
}
void DataMtnce::GeneratRandomBlk(int *arr, int num)
{
srand((unsigned int)time(NULL));
for(int i=0;i<num;i++)
{
arr[i]=0;
}
int temp=0;
int blkbasenum=GetBlkQstionNum(m_strSubject);
for(i=0;i<num;i++)
{
while(!HaveGeneratedBlk(temp,arr))
temp=rand()%blkbasenum;
arr[i]=temp;
}
}
void DataMtnce::GeneratRandomJdg(int *arr, int num)
{
srand((unsigned int)time(NULL));
for(int i=0;i<num;i++)
{
arr[i]=0;
}
int temp=0;
int jdgbasenum=GetJdgQstionNum(m_strSubject);
for(i=0;i<num;i++)
{
while(!HaveGeneratedJdg(temp,arr))
temp=rand()%jdgbasenum;
arr[i]=temp;
}
}
int DataMtnce::CalRightNum()
{
int temp=0;
int tempans;
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",m_strSubject);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString resultbase=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("学生答题结果库");
sql.Format("select * from %s where 学号=%d",resultbase,m_iStdntID);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
while(!Adoconn.m_pRecordset->adoEOF)
{
tempans=atoi((char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("是否正确"));
if (-1==tempans)
{
temp++;
}
Adoconn.m_pRecordset->MoveNext();
}
return temp;
}
BOOL DataMtnce::HaveGeneratedBlk(int temp, int *titlenum)
{
if(temp<=0)
return false;
int size=GetBlkNum(m_strSubject);
for(int i=0;i<size;i++)
{
if(temp==titlenum[i])
return false;
}
return true;
}
BOOL DataMtnce::HaveGeneratedJdg(int temp, int *titlenum)
{
if(temp<=0)
return false;
int size=GetJdgNum(m_strSubject);
for(int i=0;i<size;i++)
{
if(temp==titlenum[i])
return false;
}
return true;
}
void DataMtnce::TReadSelAns(int qstionid)
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",m_strSubject);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString basename=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选择题库名称");
sql.Format("select * from %s where 试题ID=%d",basename,qstionid);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
m_strSlctAnsA=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选项1");
m_strSlctAnsB=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选项2");
m_strSlctAnsC=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选项3");
m_strSlctAnsD=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选项4");
Adoconn.ExitConnect();
}
CString DataMtnce::TReadBlkAns(int qstionid)
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",m_strSubject);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString basename=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("填空题库名称");
sql.Format("select * from %s where 试题ID=%d",basename,qstionid);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString temp=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("答案");
Adoconn.ExitConnect();
return temp;
}
int DataMtnce::TReadJdgAns(int qstionid)
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from titleamount where 科目名称='%s'",m_strSubject);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString basename=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("判断题库名称");
sql.Format("select * from %s where 试题ID=%d",basename,qstionid);
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
CString temp=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("答案");
Adoconn.ExitConnect();
if(temp=="错")
return 0;
else if(temp=="对")
return 1;
}
void DataMtnce::UpdateQstionID(CString basename)
{
ADOConn Adoconn;
Adoconn.OnInitADOConn();
CString sql;
sql.Format("select * from %s",basename);
int qstionid;
int i=1;
Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
while(!Adoconn.m_pRecordset->adoEOF)
{
qstionid=atoi((char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("试题ID"));
sql.Format("update %s set 试题ID=%d where 试题ID=%d",basename,i,qstionid);
Adoconn.ExecuteSQL((_bstr_t)sql);
Adoconn.m_pRecordset->MoveNext();
i++;
}
Adoconn.ExitConnect();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -