⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 examdlg.cpp

📁 一个在线考试系统的代码。功能包括考试科目管理
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		}
		GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
		//显示题目
		GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
			CExmOnlineDlg::m_ptrData->GetSelQstion(CExmOnlineDlg::m_ptrData->GetSelID()));
		//从数据库中获取并设置选项
		CExmOnlineDlg::m_ptrData->SetSelAns();
		//显示四个选项
		GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsA());
		GetDlgItem(IDC_RICHEDIT_ANSB)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsB());
		GetDlgItem(IDC_RICHEDIT_ANSC)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsC());
		GetDlgItem(IDC_RICHEDIT_ANSD)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsD());
	}
	else if (CExmOnlineDlg::m_ptrData->GetQstionType()==1)
	{
		//保存当前题有关信息
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSBlkAns(m_strBlkAns);
		CExmOnlineDlg::m_ptrData->WriteBlkResult();

		
		//显示上一题
		CExmOnlineDlg::m_ptrData->DecreaseBlk();
		m_strNotify.Format("填空题:共%d题,当前为第%d题",m_iNumBlk,
			CExmOnlineDlg::m_ptrData->GetBlkSeqnce()+1);
		GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);

		m_strBlkAns=CExmOnlineDlg::m_ptrData->ReadSBlkAns();
		UpdateData(FALSE);
		
		int current=CExmOnlineDlg::m_ptrData->GetBlkSeqnce();
		if(current==0)
		{
			GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(FALSE);
		}
		GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
		//显示题目
		GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
			CExmOnlineDlg::m_ptrData->GetBlkQstion(CExmOnlineDlg::m_ptrData->GetBlkID()));
		//从数据库中获取并设置选项
		CExmOnlineDlg::m_ptrData->SetBlkAns();
		//显示四个选项
	}
	else if(CExmOnlineDlg::m_ptrData->GetQstionType()==2)
	{
		//保存当前题有关信息
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSJdgAns(m_iJudgement);
		CExmOnlineDlg::m_ptrData->SetSJudgement(m_iJudgement);
		CExmOnlineDlg::m_ptrData->WriteJdgResult();

		
		//显示下一题
		CExmOnlineDlg::m_ptrData->DecreaseJdg();
		m_strNotify.Format("判断题:共%d题,当前为第%d题",m_iNumJdg,
			CExmOnlineDlg::m_ptrData->GetJdgSeqnce()+1);
		GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);

		m_iJudgement=CExmOnlineDlg::m_ptrData->GetSJudgement();
		UpdateData(FALSE);
		
		int current=CExmOnlineDlg::m_ptrData->GetJdgSeqnce();
		if(current==0)
		{
			GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(FALSE);
		}
		GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
		//显示题目
		GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
			CExmOnlineDlg::m_ptrData->GetJdgQstion(CExmOnlineDlg::m_ptrData->GetJdgID()));
		//从数据库中获取并设置选项
		CExmOnlineDlg::m_ptrData->SetJdgAns();
		//显示四个选项
		GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText("");

	}
}

void CExamDlg::OnButtonNext() 
{
	// TODO: Add your control notification handler code here
	if(CExmOnlineDlg::m_ptrData->GetQstionType()==0)
	{
		//保存当前题有关信息
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSAns(m_iSSelect);
		CExmOnlineDlg::m_ptrData->SetSSelection(m_iSSelect);
		CExmOnlineDlg::m_ptrData->WriteSelResult();

		
		//显示下一题
		CExmOnlineDlg::m_ptrData->IncreaseSel();
		m_strNotify.Format("选择题:共%d题,当前为第%d题",m_iNumSel,
			CExmOnlineDlg::m_ptrData->GetSelSeqnce()+1);
		GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);
		m_iSSelect=CExmOnlineDlg::m_ptrData->GetSSelection();
		UpdateData(FALSE);
		
		int temp=CExmOnlineDlg::m_ptrData->GetSelNum(CExmOnlineDlg::m_ptrData->SGetsubjct())-1;
		int current=CExmOnlineDlg::m_ptrData->GetSelSeqnce();
		if(current==temp)
		{
			GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
		}
		GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
		//显示题目
		GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
			CExmOnlineDlg::m_ptrData->GetSelQstion(CExmOnlineDlg::m_ptrData->GetSelID()));
		//从数据库中获取并设置选项
		CExmOnlineDlg::m_ptrData->SetSelAns();
		//显示四个选项
		GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsA());
		GetDlgItem(IDC_RICHEDIT_ANSB)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsB());
		GetDlgItem(IDC_RICHEDIT_ANSC)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsC());
		GetDlgItem(IDC_RICHEDIT_ANSD)->SetWindowText(CExmOnlineDlg::m_ptrData->GetAnsD());
	}
	else if (CExmOnlineDlg::m_ptrData->GetQstionType()==1)
	{
		//保存当前题有关信息
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSBlkAns(m_strBlkAns);
		CExmOnlineDlg::m_ptrData->WriteBlkResult();

		
		//显示下一题
		CExmOnlineDlg::m_ptrData->IncreaseBlk();
		m_strNotify.Format("填空题:共%d题,当前为第%d题",m_iNumBlk,
			CExmOnlineDlg::m_ptrData->GetBlkSeqnce()+1);
		GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);

		m_strBlkAns=CExmOnlineDlg::m_ptrData->ReadSBlkAns();
		UpdateData(FALSE);
		
		int temp=CExmOnlineDlg::m_ptrData->GetBlkNum(CExmOnlineDlg::m_ptrData->SGetsubjct())-1;
		int current=CExmOnlineDlg::m_ptrData->GetBlkSeqnce();
		if(current==temp)
		{
			GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
		}
		GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
		//显示题目
		GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
			CExmOnlineDlg::m_ptrData->GetBlkQstion(CExmOnlineDlg::m_ptrData->GetBlkID()));
		//从数据库中获取并设置选项
		CExmOnlineDlg::m_ptrData->SetBlkAns();
		//显示四个选项
		GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText("");
	}
	else if(CExmOnlineDlg::m_ptrData->GetQstionType()==2)
	{
		//保存当前题有关信息
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSJdgAns(m_iJudgement);
		CExmOnlineDlg::m_ptrData->SetSJudgement(m_iJudgement);
		CExmOnlineDlg::m_ptrData->WriteJdgResult();

		
		//显示下一题
		CExmOnlineDlg::m_ptrData->IncreaseJdg();

		m_strNotify.Format("判断题:共%d题,当前为第%d题",m_iNumJdg,
			CExmOnlineDlg::m_ptrData->GetJdgSeqnce()+1);
		GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);

		m_iJudgement=CExmOnlineDlg::m_ptrData->GetSJudgement();
		UpdateData(FALSE);
		
		int temp=CExmOnlineDlg::m_ptrData->GetJdgNum(CExmOnlineDlg::m_ptrData->SGetsubjct())-1;
		int current=CExmOnlineDlg::m_ptrData->GetJdgSeqnce();
		if(current==temp)
		{
			GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
		}
		GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
		//显示题目
		GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
			CExmOnlineDlg::m_ptrData->GetJdgQstion(CExmOnlineDlg::m_ptrData->GetJdgID()));
		//从数据库中获取并设置选项
		CExmOnlineDlg::m_ptrData->SetJdgAns();
		//显示四个选项
		GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText("");

	}
	
}


void CExamDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	if(IDYES==AfxMessageBox("您确定要退出吗?",MB_YESNO))
	{
		CExmOnlineDlg::m_ptrData->SetUserTypeNone();
		CDialog::OnCancel();
	}	
}

void CExamDlg::OnButtonJudge() 
{
	// TODO: Add your control notification handler code here
	GetDlgItem(IDC_RADIO_TRUE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RADIO_FALSE)->ShowWindow(SW_SHOW);
	//隐藏其他题型答题区域
	GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_BLK)->ShowWindow(SW_HIDE);

	if(CExmOnlineDlg::m_ptrData->GetQstionType()==0)
	{
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSAns(m_iSSelect);
		CExmOnlineDlg::m_ptrData->SetSSelection(m_iSSelect);
		CExmOnlineDlg::m_ptrData->WriteSelResult();

	}
	else if(CExmOnlineDlg::m_ptrData->GetQstionType()==1)
	{
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSBlkAns(m_strBlkAns);
		CExmOnlineDlg::m_ptrData->WriteBlkResult();
	}

	
	CExmOnlineDlg::m_ptrData->SetQstionTypeJdg();
	m_strNotify.Format("判断题:共%d题,当前为第%d题",m_iNumJdg,
		CExmOnlineDlg::m_ptrData->GetJdgSeqnce()+1);
	GetDlgItem(IDC_STATIC_QSTION)->SetWindowText(m_strNotify);
	
	GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
	GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
	if (CExmOnlineDlg::m_ptrData->GetJdgSeqnce()==0)
	{
		GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(FALSE);
	} 
	else if(CExmOnlineDlg::m_ptrData->GetJdgSeqnce()==CExmOnlineDlg::m_ptrData->GetJdgNum(
		CExmOnlineDlg::m_ptrData->SGetsubjct())-1)
	{
		GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
	}
	else if(CExmOnlineDlg::m_ptrData->GetJdgSeqnce()>0 && 
		CExmOnlineDlg::m_ptrData->GetJdgSeqnce()<CExmOnlineDlg::m_ptrData->GetJdgNum(
		CExmOnlineDlg::m_ptrData->SGetsubjct())-1)
	{
		GetDlgItem(IDC_BUTTON_PRE)->EnableWindow(TRUE);
		GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
	}
	if(CExmOnlineDlg::m_ptrData->GetJdgSeqnce()==CExmOnlineDlg::m_ptrData->GetJdgNum(
		CExmOnlineDlg::m_ptrData->SGetsubjct())-1 || CExmOnlineDlg::m_ptrData->GetJdgNum(
		CExmOnlineDlg::m_ptrData->SGetsubjct())==0)
		GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);

	GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText(
		CExmOnlineDlg::m_ptrData->GetJdgQstion(CExmOnlineDlg::m_ptrData->GetJdgID()));

	CExmOnlineDlg::m_ptrData->SetJdgAns();

}

void CExamDlg::OnButtonSubmit() 
{
	// TODO: Add your control notification handler code here
	if(CExmOnlineDlg::m_ptrData->GetQstionType()==0)
	{
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSAns(m_iSSelect);
		CExmOnlineDlg::m_ptrData->SetSSelection(m_iSSelect);
		CExmOnlineDlg::m_ptrData->WriteSelResult();

	}
	else if(CExmOnlineDlg::m_ptrData->GetQstionType()==1)
	{
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSBlkAns(m_strBlkAns);
		CExmOnlineDlg::m_ptrData->WriteBlkResult();
	}
	else if(CExmOnlineDlg::m_ptrData->GetQstionType()==2)
	{
		UpdateData();
		
		CExmOnlineDlg::m_ptrData->SetSJdgAns(m_iJudgement);
		CExmOnlineDlg::m_ptrData->SetSJudgement(m_iJudgement);
		CExmOnlineDlg::m_ptrData->WriteJdgResult();

	}

	if(IDYES==AfxMessageBox("确认交卷吗?交卷后将不能再次返回!",MB_YESNO))
	{
		CString temp=CExmOnlineDlg::m_ptrData->GetResult();
		AfxMessageBox(temp);
		CExmOnlineDlg::m_ptrData->SetUserTypeNone();
		CDialog::OnOK();
	}
}

void CExamDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(CExmOnlineDlg::m_ptrData->CountDown())
	{
		m_strTime.Format("剩余时间:%d:%d:%d",
			CExmOnlineDlg::m_ptrData->GetHour(),
			CExmOnlineDlg::m_ptrData->GetMinute(),
			CExmOnlineDlg::m_ptrData->GetSecond());
		GetDlgItem(IDC_STATIC_NOTICE)->SetWindowText(m_strTime);
	}
	else
	{
		KillTimer(0);
		AfxMessageBox("时间已到。请按“OK”结束考试。");
		CDialog::OnOK();
	}
	CDialog::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -