📄 cpapermgr.cpp
字号:
#include "CPaperMgr.h"
CPaperMgr::CPaperMgr()
{
m_nCurPaper = NULL;
}
CPaperMgr::~CPaperMgr()
{
CPaperVT::iterator pos;
for(pos=m_vtPaper.begin(); pos!=m_vtPaper.end(); ++pos)
{
delete (*pos);
}
m_vtPaper.clear();
}
int CPaperMgr::MoveFirst()
{
m_nCurPaper = m_vtPaper.begin();
(*m_nCurPaper)->MoveFirst();
return 0;
}
int CPaperMgr::MoveLast()
{
m_nCurPaper = m_vtPaper.end();
-- m_nCurPaper;
(*m_nCurPaper)->MoveFirst();
return 0;
}
int CPaperMgr::MovePrev()
{
int nRet = (*m_nCurPaper)->MovePrev();
if(nRet == 1)
{
if(m_nCurPaper > m_vtPaper.begin())
{
-- m_nCurPaper;
(*m_nCurPaper)->MoveLast();
}
else
return 1;
}
return 0;
}
int CPaperMgr::MoveNext()
{
int nRet = (*m_nCurPaper)->MoveNext();
if(nRet == 1)
{
++ m_nCurPaper;
if(m_nCurPaper == m_vtPaper.end())
{
-- m_nCurPaper;
return 1;
}
(*m_nCurPaper)->MoveFirst();
}
return 0;
}
int CPaperMgr::Edit(string strTitle, string strAns, string strScore, string strOptA,
string strOptB, string strOptC, string strOptD, string strOptE, string strOptF, string strOptG)
{
if(m_nCurPaper == NULL)
return 1;
(*m_nCurPaper)->Edit(strTitle, strAns, strScore, strOptA,
strOptB, strOptC, strOptD, strOptE, strOptF, strOptG);
return 0;
}
int CPaperMgr::AddTest()
{
int nRet = 0;
if(m_nCurPaper == NULL)
{
CPaper* pPaper = new CPaper;
pPaper->AddTest();
m_vtPaper.push_back(pPaper);
m_nCurPaper = m_vtPaper.begin();
}
else
{
nRet = (*m_nCurPaper)->AddTest();
if(nRet == 1)
{
// 新建试卷
CPaper* pPaper = new CPaper;
pPaper->AddTest();
// m_vtPaper.push_back(pPaper);
++ m_nCurPaper;
m_nCurPaper = m_vtPaper.insert(m_nCurPaper, pPaper);
}
}
return nRet;
}
int CPaperMgr::DelTest()
{
(*m_nCurPaper)->DelTest();
return 0;
}
int CPaperMgr::DelPaper()
{
CPaperVT::iterator pos = m_nCurPaper;
if(m_nCurPaper == m_vtPaper.end())
{
if(m_nCurPaper == m_vtPaper.begin())
m_nCurPaper = NULL;
else
-- m_nCurPaper;
}
else
++ m_nCurPaper;
delete *pos;
m_vtPaper.erase(pos);
return 0;
}
int CPaperMgr::GetContext(string &strTitle, string &strAns, string &strScore, string &strOptA,
string &strOptB, string &strOptC, string &strOptD, string &strOptE, string &strOptF, string &strOptG)
{
if(m_nCurPaper == NULL)
return -1;
(*m_nCurPaper)->GetContext(strTitle, strAns, strScore, strOptA, strOptB,
strOptC, strOptD, strOptE, strOptF, strOptG);
return 0;
}
int CPaperMgr::GetTestPos(int& nPaperIndex, int& nTestIndex)
{
if(m_nCurPaper == NULL)
return 1;
CPaperVT::iterator pos;
nPaperIndex = 1;
for(pos=m_vtPaper.begin(); pos!=m_nCurPaper; ++pos)
{
++ nPaperIndex;
}
(*m_nCurPaper)->GetTestIndex(nTestIndex);
return 0;
}
int CPaperMgr::GetCurTestNum()
{
if(m_nCurPaper == NULL)
return -1;
return (*m_nCurPaper)->GetTestNum();
}
int CPaperMgr::GetCurTotalScore()
{
if(m_nCurPaper == NULL)
return -1;
return (*m_nCurPaper)->GetTotalScore();
}
void CPaperMgr::Serialize(CFileOpt& ar)
{
if(ar.IsRead())
{
int nNum = 0;
ar >> nNum;
for(int i=0; i<nNum; ++i)
{
CPaper* pPaper = new CPaper;
pPaper->Serialize(ar);
m_vtPaper.push_back(pPaper);
}
if(nNum > 0)
{
m_nCurPaper = m_vtPaper.begin();
}
else
{
m_nCurPaper = NULL;
}
}
else
{
int nNum = m_vtPaper.size();
ar << nNum;
for(int i=0; i<nNum; ++i)
{
CPaper* pPaper = m_vtPaper[i];
pPaper->Serialize(ar);
}
}
}
void CPaperMgr::WriteUserFile(CFileOpt& ar) // 写入用户定义的文件
{
string strTitle1("###############################");
string strTitle2("###############################");
string strTitle;
int nNum = 1;
CPaperVT::iterator pos;
for(pos=m_vtPaper.begin(); pos!=m_vtPaper.end(); ++pos)
{
CPaper* pPaper = *pos;
if(pPaper->IsValid() == 0)
{
char szNum[10];
itoa(nNum, szNum, 10);
strTitle = strTitle1 + szNum + strTitle2;
ar.WriteLine(strTitle);
pPaper->WriteUserFile(ar);
++ nNum;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -