📄 managepapers.cpp
字号:
// ManagePapers.cpp : implementation file
//
#include "stdafx.h"
#include "TestApp.h"
#include "ManagePapers.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CManagePapers
IMPLEMENT_DYNCREATE(CManagePapers, CRecordView)
CManagePapers::CManagePapers()
: CRecordView(CManagePapers::IDD)
{
//{{AFX_DATA_INIT(CManagePapers)
m_pSet = NULL;
//}}AFX_DATA_INIT
}
CManagePapers::~CManagePapers()
{
if (m_pSet)
delete m_pSet;
if (m_pSetPaperData)
delete m_pSetPaperData;//删除访问PapersData表的记录集指针
((CTestAppApp*)AfxGetApp())->m_PaperManageViews=0;//启用显示试卷管理窗口菜单命令
}
void CManagePapers::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CManagePapers)
DDX_Control(pDX, IDC_USETOTEST, m_usetotest);
DDX_Control(pDX, IDC_DELETEPAPERDATA, m_delete);
DDX_Control(pDX, IDC_COMBO_PAPERNAME, m_papername);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CManagePapers, CRecordView)
//{{AFX_MSG_MAP(CManagePapers)
ON_BN_CLICKED(IDC_DELETEPAPERDATA, OnDeletepaperdata)
ON_BN_CLICKED(IDC_USETOTEST, OnUsetotest)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CManagePapers diagnostics
#ifdef _DEBUG
void CManagePapers::AssertValid() const
{
CRecordView::AssertValid();
}
void CManagePapers::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CManagePapers message handlers
CRecordset* CManagePapers::OnGetRecordset()
{
if (m_pSet != NULL)
return m_pSet;
m_pSet = new CPapersSet(NULL);
m_pSet->Open();
return m_pSet;
}
CPapersSet* CManagePapers::GetRecordset()
{
CPapersSet* pData = (CPapersSet*) OnGetRecordset();
ASSERT(pData == NULL || pData->IsKindOf(RUNTIME_CLASS(CPapersSet)));
return pData;
}
void CManagePapers::OnInitialUpdate()
{
BeginWaitCursor();
GetRecordset();
CRecordView::OnInitialUpdate();
m_pSetPaperData=new CPapersDataSet(NULL);//创建记录集指针
m_pSetPaperData->Open();//打开记录集
GetDocument()->SetTitle("定制试卷");//设置文档标题
GetParent()->SetWindowText("定制试卷");//设置子窗口标题
//创建试卷名称下列列表框
while(!m_pSet->IsEOF())
{
if(CB_ERR==m_papername.FindStringExact(-1,m_pSet->m_name))
m_papername.AddString(m_pSet->m_name);//不重复,加入列表
m_pSet->MoveNext();
}
if(0<m_papername.GetCount())
{
//有试卷记录,显示默认试卷名称
m_papername.SetCurSel(0);
}else{
//没有试卷记录,禁用按钮
m_delete.EnableWindow(false);
m_usetotest.EnableWindow(false);
}
EndWaitCursor();
}
void CManagePapers::OnDeletepaperdata()
{
CString papername,str;
int paperid;
m_papername.GetWindowText(papername);//获得试卷名称
if(""==papername)
return; //列表中已无试卷名称,直接返回
//请求用户确认删除操作
if(IDNO==MessageBox("删除试卷:"+papername,"删除试卷",MB_YESNO))
return; //不删除,直接返回
//从试卷记录集中删除试卷名称
m_pSet->m_strFilter="";
m_pSet->Requery();//刷新记录集
while(m_pSet->m_name!=papername)
m_pSet->MoveNext();
paperid=m_pSet->m_id; //获得试卷编号
m_pSet->Delete(); //删除试卷记录
//从试卷数据记录集中删除试卷数据
m_pSetPaperData->m_strFilter="";
m_pSetPaperData->Requery();
while(!m_pSetPaperData->IsEOF())
{ if(m_pSetPaperData->m_paperid==paperid)
m_pSetPaperData->Delete();
m_pSetPaperData->MoveNext();
}
MessageBox("成功删除试卷记录!","删除试卷记录");
//从列表中删除当前试卷名称
int index,n;
index=m_papername.FindStringExact(-1,papername);
m_papername.DeleteString(index);
n=m_papername.GetCount();
if(0==n)
{
//没有试卷记录,禁用按钮
m_delete.EnableWindow(false);
m_usetotest.EnableWindow(false);
}else{
//显示下一个试卷名称
if (index==n)
index--;
m_papername.SetCurSel(index);
}
}
void CManagePapers::OnUsetotest()
{ CString papername,str;
m_papername.GetWindowText(papername);//获得试卷名称
m_pSet->m_strFilter="";
m_pSet->Requery();
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{ if(m_pSet->m_name==papername)
{
m_pSet->m_used=true; //修改试卷使用标记
}else{
m_pSet->m_used=false; //修改试卷使用标记
}
m_pSet->Update();
m_pSet->MoveNext();
}
MessageBox("成功选择试卷!","选择考试试卷");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -