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

📄 addqstiondlg.cpp

📁 一个在线考试系统的代码。功能包括考试科目管理
💻 CPP
字号:
// AddQstionDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ExmOnline.h"
#include "AddQstionDlg.h"

#include "ExmOnlineDlg.h"
#include "ADOConn.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAddQstionDlg dialog


CAddQstionDlg::CAddQstionDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAddQstionDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAddQstionDlg)
	m_strBlkAns = _T("");
	m_iSelAns = -1;
	m_iJudgement = -1;
	m_strAnsA = _T("");
	m_strAnsB = _T("");
	m_strAnsC = _T("");
	m_strAnsD = _T("");
	m_strQstion = _T("");
	//}}AFX_DATA_INIT
}


void CAddQstionDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAddQstionDlg)
	DDX_Control(pDX, IDC_COMBO_QSTIONTYPE, m_ctrQstionType);
	DDX_Control(pDX, IDC_COMBO_SUBJCT, m_ctrSubjct);
	DDX_Text(pDX, IDC_EDIT_BLKANS, m_strBlkAns);
	DDX_Radio(pDX, IDC_RADIO_ANSA, m_iSelAns);
	DDX_Radio(pDX, IDC_RADIO_JUDGEFALSE, m_iJudgement);
	DDX_Text(pDX, IDC_RICHEDIT_ANSA, m_strAnsA);
	DDX_Text(pDX, IDC_RICHEDIT_ANSB, m_strAnsB);
	DDX_Text(pDX, IDC_RICHEDIT_ANSC, m_strAnsC);
	DDX_Text(pDX, IDC_RICHEDIT_ANSD, m_strAnsD);
	DDX_Text(pDX, IDC_RICHEDIT_QSTION, m_strQstion);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAddQstionDlg, CDialog)
	//{{AFX_MSG_MAP(CAddQstionDlg)
	ON_CBN_SELCHANGE(IDC_COMBO_QSTIONTYPE, OnSelchangeComboQstiontype)
	ON_CBN_SELCHANGE(IDC_COMBO_SUBJCT, OnSelchangeComboSubjct)
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAddQstionDlg message handlers

BOOL CAddQstionDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CExmOnlineDlg::m_ptrData->SetSelSubjct(&m_ctrSubjct);

	HideAll();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAddQstionDlg::HideAll()
{
	//选择
	GetDlgItem(IDC_STATIC_ANSA)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_ANSB)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_ANSC)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_ANSD)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_HIDE);
	//判断
	GetDlgItem(IDC_RADIO_JUDGEFALSE)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIO_JUDGETRUE)->ShowWindow(SW_HIDE);
	//填空
	GetDlgItem(IDC_STATIC_BLK)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_HIDE);

}


void CAddQstionDlg::ShowBlk()
{
	GetDlgItem(IDC_STATIC_BLK)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_EDIT_BLKANS)->ShowWindow(SW_SHOW);
}

void CAddQstionDlg::ShowJdg()
{
	GetDlgItem(IDC_RADIO_JUDGEFALSE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RADIO_JUDGETRUE)->ShowWindow(SW_SHOW);
}

void CAddQstionDlg::ShowSel()
{
	GetDlgItem(IDC_STATIC_ANSA)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_ANSB)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_ANSC)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_ANSD)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RICHEDIT_ANSA)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RICHEDIT_ANSB)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RICHEDIT_ANSC)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RICHEDIT_ANSD)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RADIO_ANSA)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RADIO_ANSB)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RADIO_ANSC)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_RADIO_ANSD)->ShowWindow(SW_SHOW);

}

void CAddQstionDlg::OnSelchangeComboQstiontype() 
{
	// TODO: Add your control notification handler code here
	CString strtemp;
	m_ctrQstionType.GetLBText(m_ctrQstionType.GetCurSel(),strtemp);
	if(strtemp=="选择题")			//选择题
	{
		m_eType=type_sel;
		HideAll();
		ShowSel();
	}
	else if(strtemp=="填空题")		//填空题
	{
		m_eType=type_blk;
		HideAll();
		ShowBlk();
	}
	else if(strtemp=="判断题")		//判断题
	{
		m_eType=type_jdg;
		HideAll();
		ShowJdg();
	}
}

void CAddQstionDlg::OnSelchangeComboSubjct() 
{
	// TODO: Add your control notification handler code here
	CString strtemp;
	m_ctrSubjct.GetLBText(m_ctrSubjct.GetCurSel(),strtemp);
	m_strSubjct=strtemp;
}

void CAddQstionDlg::OnButtonOk() 
{
	// TODO: Add your control notification handler code here
	ADOConn Adoconn;
	Adoconn.OnInitADOConn();
	CString sql;
	if(m_eType==type_sel)
	{
		//选择题
		UpdateData();
		if(m_iSelAns==-1)
			AfxMessageBox("请给出该题的答案!");
		else
		{
			if(m_strAnsA.IsEmpty() || m_strAnsB.IsEmpty())
				AfxMessageBox("选项A和B不能为空!");
			else if((m_strAnsC.IsEmpty() && m_iSelAns==2) ||
				(m_strAnsD.IsEmpty() && m_iSelAns==3))
				AfxMessageBox("答案设置不合理!请仔细检查!");
			else
			{
				if(m_iSelAns==0)
					m_strAns=m_strAnsA;
				else if(m_iSelAns==1)
					m_strAns=m_strAnsB;
				else if(m_iSelAns==2)
					m_strAns=m_strAnsC;
				else if(m_iSelAns==3)
					m_strAns=m_strAnsD;
				sql.Format("select * from titleamount where 科目名称='%s'",m_strSubjct);
				Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
				m_strBasename=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("选择题库名称");
				int tempid=CExmOnlineDlg::m_ptrData->GetRecordNum(m_strBasename)+1;
				sql.Format("insert into %s values(%d,'%s','%s','%s','%s','%s','%s')",
					m_strBasename,tempid,m_strQstion,m_strAnsA,m_strAnsB,m_strAnsC,m_strAnsD,m_strAns);
				Adoconn.ExecuteSQL((_bstr_t)sql);

			}
		}
	}
	else if(m_eType==type_blk)
	{
		//填空题
		UpdateData();
		if(m_strBlkAns.IsEmpty())
			AfxMessageBox("请给出该题的答案!");
		else
		{
			m_strAns=m_strBlkAns;
			sql.Format("select * from titleamount where 科目名称='%s'",m_strSubjct);
			Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
			m_strBasename=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("填空题库名称");
			int tempid=CExmOnlineDlg::m_ptrData->GetRecordNum(m_strBasename)+1;
			sql.Format("insert into %s values(%d,'%s','%s')",
				m_strBasename,tempid,m_strQstion,m_strAns);
			Adoconn.ExecuteSQL((_bstr_t)sql);
		}
	}
	else if(m_eType==type_jdg)
	{
		//判断题
		UpdateData();
		if(m_iJudgement==-1)
			AfxMessageBox("请给出答案!");
		else
		{
			if(m_iJudgement==0)
				m_strAns="错";
			else if(m_iJudgement==1)
				m_strAns="对";
			sql.Format("select * from titleamount where 科目名称='%s'",m_strSubjct);
			Adoconn.m_pRecordset=Adoconn.GetRecordSet((_bstr_t)sql);
			m_strBasename=(char *)(_bstr_t)Adoconn.m_pRecordset->GetCollect("判断题库名称");
			int tempid=CExmOnlineDlg::m_ptrData->GetRecordNum(m_strBasename)+1;
			sql.Format("insert into %s values(%d,'%s','%s')",
				m_strBasename,tempid,m_strQstion,m_strAns);
			Adoconn.ExecuteSQL((_bstr_t)sql);
		}
	}
	ClearAll();
	Adoconn.ExitConnect();
}

void CAddQstionDlg::ClearAll()
{
	//题目
	GetDlgItem(IDC_RICHEDIT_QSTION)->SetWindowText("");
	//选择
	GetDlgItem(IDC_RICHEDIT_ANSA)->SetWindowText("");
	GetDlgItem(IDC_RICHEDIT_ANSB)->SetWindowText("");
	GetDlgItem(IDC_RICHEDIT_ANSC)->SetWindowText("");
	GetDlgItem(IDC_RICHEDIT_ANSD)->SetWindowText("");
	//填空
	GetDlgItem(IDC_STATIC_BLK)->SetWindowText("");
	GetDlgItem(IDC_EDIT_BLKANS)->SetWindowText("");


}

⌨️ 快捷键说明

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