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

📄 subform_1.cpp

📁 考试管理系统
💻 CPP
字号:
// SubForm_1.cpp : implementation file
//

#include "stdafx.h"
#include "Exam.h"
#include "SubForm_1.h"
#include "ExamDoc.h"
#include "ExamView.h"


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

/////////////////////////////////////////////////////////////////////////////
// CSubForm_1 dialog


CSubForm_1::CSubForm_1(CWnd* pParent /*=NULL*/)
	: CDialog(CSubForm_1::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSubForm_1)
	m_sClass = _T("");
	m_sGrade = _T("");
	//}}AFX_DATA_INIT
	m_nCourseID = -1;
}


void CSubForm_1::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSubForm_1)
	DDX_Control(pDX, IDC_COURSE, m_ctrlCourse);
	DDX_CBString(pDX, IDC_CLASS, m_sClass);
	DDX_Control(pDX, IDC_DBGRID, m_ctrlDBGrid);
	DDX_Control(pDX, IDC_REMOTEDATACTL, m_clsRdc);
	DDX_CBString(pDX, IDC_GRADE, m_sGrade);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSubForm_1, CDialog)
	//{{AFX_MSG_MAP(CSubForm_1)
	ON_CBN_SELCHANGE(IDC_GRADE, OnSelchangeGrade)
	ON_CBN_SELCHANGE(IDC_CLASS, OnSelchangeClass)
	ON_CBN_SELCHANGE(IDC_COURSE, OnSelchangeCourse)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSubForm_1 message handlers

BOOL CSubForm_1::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_pView = (CExamView*)GetParent();
	
	// Recordset对象
	_RecordsetPtr pRecordset;
	
	try
	{
		// 创建Recordset对象
		pRecordset.CreateInstance(__uuidof(Recordset));
	
		// 打开记录集,使用静态光标和开放式锁定方式
		pRecordset->Open(_bstr_t("SELECT * FROM 课程信息"), 
						 _variant_t((IDispatch*)m_pView->m_pConnection, true), 
						 adOpenStatic,
						 adLockOptimistic,
						 adCmdText);
	}
	catch (_com_error e)
	{
		// 显示错误信息
		CString errormessage;
		errormessage.Format("打开记录集失败!\r\n错误信息:%s", e.ErrorMessage());
		AfxMessageBox(errormessage);
		return FALSE;
	}

	// 显示信息录入对话框
	_variant_t vField;
	try
	{
		// 取得所有课程名称
		for (int i = 0; i < pRecordset->GetRecordCount(); i++)
		{
			vField = pRecordset->GetCollect(long(1));
			m_ctrlCourse.AddString(CString(vField.bstrVal));
			pRecordset->MoveNext();
		}

		// 关闭记录集
		pRecordset->Close();
	}
	catch (_com_error e)
	{
		// 显示错误信息
		CString errormessage;
		errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
		AfxMessageBox(errormessage);
	}
 
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSubForm_1::OnSelchangeGrade() 
{
	// 得到选中的课程名称
	CString sCourse;
	int nSel = m_ctrlCourse.GetCurSel();
	if (nSel >= 0)
		m_ctrlCourse.GetLBText(nSel, sCourse);
	UpdateData(TRUE);
	if (m_sGrade != "" && m_sClass != "" && m_sCourse != "")		
	{
		// Recordset对象
		_RecordsetPtr pRecordset;
		_variant_t vField;
		try
		{
			// 创建Recordset对象
			pRecordset.CreateInstance(__uuidof(Recordset));

			// 打开指定的记录集,使用静态光标和开放式锁定方式
			CString sCmd = "SELECT * FROM 班级信息 WHERE 年级 = '" + m_sGrade + "' AND 班级名称 = '" + m_sClass + "'";
			pRecordset->Open(_bstr_t(sCmd), 
						 _variant_t((IDispatch*)m_pView->m_pConnection, true), 
						 adOpenStatic,
						 adLockOptimistic,
						 adCmdText);

			// 得到班级ID索引
			vField = pRecordset->GetCollect(long(0));

			// 关闭记录集
			pRecordset->Close();
		}
		catch (_com_error e)
		{
			// 显示错误信息
			CString errormessage;
			errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
			AfxMessageBox(errormessage);
		}

		CString sSQL;
		if (m_nCourseID == -1)
			sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d ORDER BY 成绩 DESC", vField.lVal);
		else
			sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d AND 课程ID = %d ORDER BY 成绩 DESC", vField.lVal, m_nCourseID);

		// 直接执行SQL语句
		m_clsRdc.SetSql(sSQL);	

		// 更新记录集  
		m_clsRdc.Refresh();	
	}
}

void CSubForm_1::OnSelchangeClass() 
{
	// 得到选中的课程名称
	CString sCourse;
	int nSel = m_ctrlCourse.GetCurSel();
	if (nSel >= 0)
		m_ctrlCourse.GetLBText(nSel, sCourse);
	UpdateData(TRUE);
	if (m_sGrade != "" && m_sClass != "" && m_sCourse != "")		
	{
		// Recordset对象
		_RecordsetPtr pRecordset;
		_variant_t vField;
		try
		{
			// 创建Recordset对象
			pRecordset.CreateInstance(__uuidof(Recordset));

			// 打开指定的记录集,使用静态光标和开放式锁定方式
			CString sCmd = "SELECT * FROM 班级信息 WHERE 年级 = '" + m_sGrade + "' AND 班级名称 = '" + m_sClass + "'";
			pRecordset->Open(_bstr_t(sCmd), 
						 _variant_t((IDispatch*)m_pView->m_pConnection, true), 
						 adOpenStatic,
						 adLockOptimistic,
						 adCmdText);

			// 得到班级ID索引
			vField = pRecordset->GetCollect(long(0));

			// 关闭记录集
			pRecordset->Close();
		}
		catch (_com_error e)
		{
			// 显示错误信息
			CString errormessage;
			errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
			AfxMessageBox(errormessage);
		}

		CString sSQL;
		if (m_nCourseID == -1)
			sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d ORDER BY 成绩 DESC", vField.lVal);
		else
			sSQL.Format("Select * from 考生信息 WHERE 班级ID = %d AND 课程ID = %d ORDER BY 成绩 DESC", vField.lVal, m_nCourseID);

		// 直接执行SQL语句
		m_clsRdc.SetSql(sSQL);	

		// 更新记录集  
		m_clsRdc.Refresh();	
	}	
}

void CSubForm_1::OnSelchangeCourse() 
{
	// 得到选中的课程名称
	m_ctrlCourse.GetLBText(m_ctrlCourse.GetCurSel(), m_sCourse);
	UpdateData();

	if (m_sCourse != "")		
	{
		// Recordset对象
		_RecordsetPtr pRecordset;
		_variant_t vField;
		try
		{
			// 创建Recordset对象
			pRecordset.CreateInstance(__uuidof(Recordset));
		
			// 打开记录集,使用静态光标和开放式锁定方式
			CString sCmd = "SELECT * FROM 课程信息 WHERE 课程名称 = '" + m_sCourse + "'";
			pRecordset->Open(_bstr_t(sCmd), 
							 _variant_t((IDispatch*)m_pView->m_pConnection, true), 
							 adOpenStatic,
							 adLockOptimistic,
							 adCmdText);

			// 得到班级ID索引
			vField = pRecordset->GetCollect(long(0));

			// 关闭记录集
			pRecordset->Close();
		}
		catch (_com_error e)
		{
			// 显示错误信息
			CString errormessage;
			errormessage.Format("访问记录字段失败!\r\n错误信息:%s", e.ErrorMessage());
			AfxMessageBox(errormessage);
		}
	
		CString sSQL;
		m_nCourseID = vField.lVal;
		sSQL.Format("Select * from 考生信息 WHERE 课程ID = %d", vField.lVal);

		// 直接执行SQL语句
		m_clsRdc.SetSql(sSQL);	

		// 更新记录集  
		m_clsRdc.Refresh();	
	}
}

BEGIN_EVENTSINK_MAP(CSubForm_1, CDialog)
    //{{AFX_EVENTSINK_MAP(CSubForm_1)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()


⌨️ 快捷键说明

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