📄 mainfrm.cpp
字号:
buf[4].TrimRight();
m_temprecordset2.GetFieldValue(5,OleVar2);
buf[5]=OleVar2.m_pstring->GetBuffer(1);
buf[5].TrimLeft();
buf[5].TrimRight();
m_temprecordset2.GetFieldValue(6,OleVar2);
buf[6]=OleVar2.m_pstring->GetBuffer(1);
buf[6].TrimLeft();
buf[1].TrimRight();
m_temprecordset2.GetFieldValue(7,OleVar2);
buf[7]=OleVar2.m_pstring->GetBuffer(1);
buf[7].TrimLeft();
buf[7].TrimRight();
m_temprecordset2.GetFieldValue(8,OleVar2);
buf[8]=OleVar2.m_pstring->GetBuffer(1);
buf[8].TrimLeft();
buf[8].TrimRight();
buf[9].Format("%d",m+1);
strSQL3.Empty();
strSQL3.Format("insert into 试卷表(题目编号,考试对象,难度级别,题目内容,选项A,选项B,选项C,选项D,标准答案,排序变量) values('"+buf[0]+"','"+buf[1]+"','"
+buf[2]+"','"+buf[3]+"','"+buf[4]+"','"+buf[5]+"','"
+buf[6]+"','"+buf[7]+"','"+buf[8]+"','"
+buf[9]+"')");
m_database.ExecuteSQL(strSQL3);
}
for(int n=0;n<value2;n++)
{
m_temprecordset3.MoveFirst();
m_temprecordset3.Move(temp2[n]);
int te=0;
m_temprecordset3.GetFieldValue(te,OleVar2);
buf[0].Format("%d",OleVar2.m_iVal);
m_temprecordset3.GetFieldValue(1,OleVar2);
buf[1]=OleVar2.m_pstring->GetBuffer(1);
buf[1].TrimLeft();
buf[1].TrimRight();
m_temprecordset3.GetFieldValue(2,OleVar2);
buf[2].Format("%d",OleVar2.m_iVal);
m_temprecordset3.GetFieldValue(3,OleVar2);
buf[3]=OleVar2.m_pstring->GetBuffer(1);
buf[3].TrimLeft();
buf[3].TrimRight();
m_temprecordset3.GetFieldValue(4,OleVar2);
buf[4]=OleVar2.m_pstring->GetBuffer(1);
buf[4].TrimLeft();
buf[4].TrimRight();
m_temprecordset3.GetFieldValue(5,OleVar2);
buf[5]=OleVar2.m_pstring->GetBuffer(1);
buf[5].TrimLeft();
buf[5].TrimRight();
m_temprecordset3.GetFieldValue(6,OleVar2);
buf[6]=OleVar2.m_pstring->GetBuffer(1);
buf[6].TrimLeft();
buf[6].TrimRight();
m_temprecordset3.GetFieldValue(7,OleVar2);
buf[7]=OleVar2.m_pstring->GetBuffer(1);
buf[7].TrimLeft();
buf[7].TrimRight();
m_temprecordset3.GetFieldValue(8,OleVar2);
buf[8]=OleVar2.m_pstring->GetBuffer(1);
buf[8].TrimLeft();
buf[8].TrimRight();
buf[9].Format("%d",value1+1+n);
strSQL3.Empty();
strSQL3.Format("insert into 试卷表(题目编号,考试对象,难度级别,题目内容,选项A,选项B,选项C,选项D,标准答案,排序变量) values('"+buf[0]+"','"+buf[1]+"','"
+buf[2]+"','"+buf[3]+"','"+buf[4]+"','"+buf[5]+"','"
+buf[6]+"','"+buf[7]+"','"+buf[8]+"','"
+buf[9]+"')");
m_database.ExecuteSQL(strSQL3);
}
return TRUE;
}
BOOL CMainFrame::CreateTestPaper()//试卷生成函数
{
int number=0;
int DXnumber;
int PDnumber;
double PDscore;
double DXscore;
int w=3;
CString temp;
int bian;
CString name;
CDBVariant OleVar;
_Application WordApp;
Documents docs;
_Document doc;
Range range;
Table table;
Tables tables;
Cell cell;
Paragraph paragraph;
Paragraphs paragraphs;
CTestPaperApp* pApp=(CTestPaperApp*) AfxGetApp();
if(pApp->enterdlg.struser!="administrator")
{
AfxMessageBox("对不起!你是一般用户身份!");
return FALSE;
}
if(BoolConnent==FALSE)
{
AfxMessageBox("请连接数据源或无记录!");
return FALSE;
}
try
{
CString temppaper;
temppaper.Format("select * from 试卷表");
if(m_testpaperrecordset.IsOpen())
{
m_testpaperrecordset2.Close();
m_testpaperrecordset2.Open(CRecordset::dynaset,temppaper);
}
else
{
m_testpaperrecordset2.Open(CRecordset::dynaset,temppaper);
}
}
catch(...)
{
AfxMessageBox("cann't open table!");
return FALSE;
}
if(m_testpaperrecordset2.GetRecordCount()==0)
{
AfxMessageBox("对不起,当前试卷无试题!");
return FALSE;
}
else
{
m_testpaperrecordset2.MoveFirst();
while(!m_testpaperrecordset2.IsEOF())
{
number=number+1;
m_testpaperrecordset2.MoveNext();
}
}
try
{
if(m_temprecordset1.IsOpen())
{
m_temprecordset1.Close();
m_temprecordset1.Open(CRecordset::dynaset,"select * from 试卷参数设置");
}
else
{
m_temprecordset1.Open(CRecordset::dynaset,"select * from 试卷参数设置");
}
}
catch(...)
{
AfxMessageBox("cann't open table!");
return FALSE;
}
if(m_temprecordset1.GetRecordCount()==0)
{
AfxMessageBox("无试卷参数,无法生成试卷!");
return FALSE;
}
m_temprecordset1.MoveLast();
m_temprecordset1.GetFieldValue(4,OleVar);
DXnumber=OleVar.m_iVal;
m_temprecordset1.GetFieldValue(5,OleVar);
PDnumber=OleVar.m_iVal;
m_temprecordset1.GetFieldValue(6,OleVar);
DXscore=OleVar.m_dblVal;
m_temprecordset1.GetFieldValue(7,OleVar);
PDscore=OleVar.m_dblVal;
m_temprecordset1.GetFieldValue(9,OleVar);
name=OleVar.m_pstring->GetBuffer(1);//获取考试名称
name.TrimLeft();
name.TrimRight();
CoInitialize(NULL);
if(!WordApp.CreateDispatch("Word.Application",NULL))
{
AfxMessageBox("创建Word服务失败!");
exit(1);
return FALSE;
}
COleVariant start_line,end_line;
WordApp.SetVisible(true);
docs=WordApp.GetDocuments();
COleVariant covOptional((long) DISP_E_PARAMNOTFOUND,VT_ERROR);
doc=docs.Add(covOptional,covOptional,covOptional,covOptional);
start_line=end_line=covOptional;
range=doc.Range(start_line,end_line);
tables=doc.GetTables();
table=tables.Add(range,5*DXnumber+PDnumber+6,1,covOptional,covOptional);
cell=table.Cell(1,1);
range=cell.GetRange();
range.SetBold(1);
range.SetText(name);
cell=table.Cell(2,1);
range=cell.GetRange();
CString text;
text.Format(" ");
range.SetText(text);
cell=table.Cell(3,1);
range=cell.GetRange();
text.Format("姓名: 单位: 得分: ");
range.SetText(text);
cell=table.Cell(4,1);
range=cell.GetRange();
text.Format("一、单项选择题(每题%.1f分)",DXscore);
range.SetText(text);
range.SetBold(1);
m_testpaperrecordset2.MoveFirst();
for(int k=5;k<5*DXnumber+5;k++)
{
switch(w)
{
case 3:m_testpaperrecordset2.GetFieldValue(3,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
m_testpaperrecordset2.GetFieldValue(9,OleVar);
bian=OleVar.m_iVal;
temp.Format("%d. ",bian);
cell=table.Cell(k,1);
range=cell.GetRange();
range.SetText(temp+text);
break;
case 4:m_testpaperrecordset2.GetFieldValue(4,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
cell=table.Cell(k,1);
range=cell.GetRange();
range.SetText(" A、"+text);
break;
case 5:m_testpaperrecordset2.GetFieldValue(5,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
cell=table.Cell(k,1);
range=cell.GetRange();
range.SetText(" B、"+text);
break;
case 6:m_testpaperrecordset2.GetFieldValue(6,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
cell=table.Cell(k,1);
range=cell.GetRange();
range.SetText(" C、"+text);
break;
case 7:m_testpaperrecordset2.GetFieldValue(7,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
cell=table.Cell(k,1);
range=cell.GetRange();
range.SetText(" D、"+text);
break;
}
w=w+1;
if(w==8)
{
w=3;
m_testpaperrecordset2.MoveNext();
}
}
cell=table.Cell(5*DXnumber+6,1);
range=cell.GetRange();
text.Format("二、判断题(每题%.1f分)",PDscore);
range.SetText(text);
range.SetBold(1);
for(int n=5*DXnumber+7;n<5*DXnumber+7+PDnumber;n++)
{
m_testpaperrecordset2.GetFieldValue(3,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
m_testpaperrecordset2.GetFieldValue(9,OleVar);
bian=OleVar.m_iVal;
temp.Format("%d. ",bian);
cell=table.Cell(n,1);
range=cell.GetRange();
range.SetText(temp+text);
m_testpaperrecordset2.MoveNext();
}
return TRUE;
}
BOOL CMainFrame::CreateAnswer()//答案生成函数
{
int number=0;
int DXnumber;
int PDnumber;
double PDscore;
double DXscore;
int w=3;
CString temp;
int bian;
CString name;
CDBVariant OleVar;
_Application WordApp;
Documents docs;
_Document doc;
Range range;
Table table;
Tables tables;
Cell cell;
Paragraph paragraph;
Paragraphs paragraphs;
CTestPaperApp* pApp=(CTestPaperApp*) AfxGetApp();
if(pApp->enterdlg.struser!="administrator")
{
AfxMessageBox("对不起!你是一般用户身份!");
return FALSE;
}
if(BoolConnent==FALSE)
{
AfxMessageBox("请连接数据源或无记录!");
return FALSE;
}
try
{
CString temppaper;
temppaper.Format("select * from 试卷表");
if(m_testpaperrecordset.IsOpen())
{
m_testpaperrecordset2.Close();
m_testpaperrecordset2.Open(CRecordset::dynaset,temppaper);
}
else
{
m_testpaperrecordset2.Open(CRecordset::dynaset,temppaper);
}
}
catch(...)
{
AfxMessageBox("cann't open table!");
return FALSE;
}
if(m_testpaperrecordset2.GetRecordCount()==0)
{
AfxMessageBox("对不起,当前试卷无答案!");
return FALSE;
}
else
{
m_testpaperrecordset2.MoveFirst();
while(!m_testpaperrecordset2.IsEOF())
{
number=number+1;
m_testpaperrecordset2.MoveNext();
}
}
try
{
if(m_temprecordset1.IsOpen())
{
m_temprecordset1.Close();
m_temprecordset1.Open(CRecordset::dynaset,"select * from 试卷参数设置");
}
else
{
m_temprecordset1.Open(CRecordset::dynaset,"select * from 试卷参数设置");
}
}
catch(...)
{
AfxMessageBox("cann't open table!");
return FALSE;
}
if(m_temprecordset1.GetRecordCount()==0)
{
AfxMessageBox("无试卷参数,无法生成试卷!");
return FALSE;
}
m_temprecordset1.MoveLast();
m_temprecordset1.GetFieldValue(4,OleVar);
DXnumber=OleVar.m_iVal;
m_temprecordset1.GetFieldValue(5,OleVar);
PDnumber=OleVar.m_iVal;
m_temprecordset1.GetFieldValue(6,OleVar);
DXscore=OleVar.m_dblVal;
m_temprecordset1.GetFieldValue(7,OleVar);
PDscore=OleVar.m_dblVal;
m_temprecordset1.GetFieldValue(9,OleVar);
name=OleVar.m_pstring->GetBuffer(1);//获取考试名称
name.TrimLeft();
name.TrimRight();
CoInitialize(NULL);
if(!WordApp.CreateDispatch("Word.Application",NULL))
{
AfxMessageBox("创建Word服务失败!");
exit(1);
return FALSE;
}
COleVariant start_line,end_line;
WordApp.SetVisible(true);
docs=WordApp.GetDocuments();
COleVariant covOptional((long) DISP_E_PARAMNOTFOUND,VT_ERROR);
doc=docs.Add(covOptional,covOptional,covOptional,covOptional);
start_line=end_line=covOptional;
range=doc.Range(start_line,end_line);
tables=doc.GetTables();
table=tables.Add(range,6,1,covOptional,covOptional);
cell=table.Cell(1,1);
range=cell.GetRange();
range.SetBold(1);
range.SetText(name+"(答案)");
cell=table.Cell(2,1);
range=cell.GetRange();
CString text;
text.Format(" ");
range.SetText(text);
cell=table.Cell(3,1);
range=cell.GetRange();
text.Format("一、单项选择题(每题%.1f分)",DXscore);
range.SetText(text);
range.SetBold(1);
CString Atemp;
m_testpaperrecordset2.MoveFirst();
for(int k=0;k<DXnumber;k++)
{
m_testpaperrecordset2.GetFieldValue(8,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
m_testpaperrecordset2.GetFieldValue(9,OleVar);
bian=OleVar.m_iVal;
temp.Format("%d."+text,bian);
Atemp=Atemp+temp;
m_testpaperrecordset2.MoveNext();
}
cell=table.Cell(4,1);
range=cell.GetRange();
range.SetText(Atemp);
cell=table.Cell(5,1);
range=cell.GetRange();
text.Format("二、判断题(每题%.1f分)",PDscore);
range.SetText(text);
range.SetBold(1);
CString Ztemp;
for(int n=0;n<PDnumber;n++)
{
m_testpaperrecordset2.GetFieldValue(8,OleVar);
text=OleVar.m_pstring->GetBuffer(1);
text.TrimLeft();
text.TrimRight();
m_testpaperrecordset2.GetFieldValue(9,OleVar);
bian=OleVar.m_iVal;
temp.Format("%d."+text,bian);
Ztemp=Ztemp+temp;
m_testpaperrecordset2.MoveNext();
}
cell=table.Cell(6,1);
range=cell.GetRange();
range.SetText(Ztemp);
return TRUE;
}
void CMainFrame::OnAnswer()
{
// TODO: Add your command handler code here
CreateAnswer();
}
void CMainFrame::OnCreateTestPaper()
{
// TODO: Add your command handler code here
ChooseTestPaper();
CreateTestPaper();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -