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

📄 studentinfo.cpp

📁 &#61557 职责描述:
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// StudentInfo.cpp : implementation file
//

#include "stdafx.h"
#include "StudentCheck.h"
#include "StudentInfo.h"


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

#define COLNUM 12 // 11是记录的属性数目
#define COLSTARTNUM 32775 // 11是记录的属性数目 
/////////////////////////////////////////////////////////////////////////////
// CStudentInfoDlg dialog


CStudentInfoDlg::CStudentInfoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStudentInfoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStudentInfoDlg)
	m_strClassNum = _T("");
	m_strCollegeNum = _T("");
	m_strDormPos = _T("");
	m_strDuty = _T("");
	m_strGradeNum = _T("");
	m_strRoomNum = _T("");
	m_strSpecialtyNum = _T("");
	m_strStuID = _T("");
	m_strStuBDay = _T("");
	m_strStuName = _T("");
	m_strStuSex = _T("");
	m_strTest = _T("");
	//}}AFX_DATA_INIT
	m_bIsCurDlgChanged = TRUE;
	m_bIsIsertNewRecord = TRUE;
	m_bIsUseReadOnly = FALSE;
	StuInfoPointerConjunction();
	m_strModifySQL.LoadString(IDS_SQL_NOSQL);
	m_pStuInfo = NULL;
//	m_ctrlStuID.Create()
}


void CStudentInfoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStudentInfoDlg)
	DDX_Control(pDX, IDC_STU_SEX, m_ctrlSex);
	DDX_Control(pDX, IDC_SPECIALTY_NUM, m_ctrlSpecialtyName);
	DDX_Control(pDX, IDC_GRADE_NUM, m_ctrlGradeName);
	DDX_Control(pDX, IDC_CLASS_NUM, m_ctrlClassName);
	DDX_CBString(pDX, IDC_CLASS_NUM, m_strClassNum);
	DDX_CBString(pDX, IDC_COLLEGE_NUM, m_strCollegeNum);
	DDX_Text(pDX, IDC_DORM_POS, m_strDormPos);
	DDX_Text(pDX, IDC_DUTY, m_strDuty);
	DDX_CBString(pDX, IDC_GRADE_NUM, m_strGradeNum);
	DDX_Text(pDX, IDC_ROOM_NUM, m_strRoomNum);
	DDX_CBString(pDX, IDC_SPECIALTY_NUM, m_strSpecialtyNum);
	DDX_Text(pDX, IDC_STD_ID, m_strStuID);
	DDX_Control(pDX, IDC_STD_ID, m_ctrlStuID);
	DDX_Text(pDX, IDC_STU_BD, m_strStuBDay);
	DDX_Text(pDX, IDC_STU_NAME, m_strStuName);
	DDX_CBString(pDX, IDC_STU_SEX, m_strStuSex);
	//}}AFX_DATA_MAP
}


void CStudentInfoDlg::SetItmeInfos(CArray <CString, LPCTSTR> * _pCurItemInfos, int _nStuInfoArySize)
{
	CString ** pCurString = NULL;
	CString * strItemInfo = NULL;

	pCurString = m_OneStuInfosPointerAry.GetData();
	strItemInfo = _pCurItemInfos->GetData();

	for (int i = 0; i < _nStuInfoArySize; i++)
	{
		*pCurString[i] = strItemInfo[i];
	}
//	UpdateData(TRUE);
}
void CStudentInfoDlg::SetStuInfoPointer(CStuInfo* _pCurStuInfos)
{
	m_pStuInfo = _pCurStuInfos;
}

void CStudentInfoDlg::StuInfoPointerConjunction()
{
	m_OneStuInfosPointerAry.SetSize(COLNUM-1);
	CString ** pCurString = NULL;
	pCurString = m_OneStuInfosPointerAry.GetData();
	pCurString[0] = &m_strStuID;
	pCurString[1] = &m_strStuName;
	pCurString[2] = &m_strStuSex;
	pCurString[3] = &m_strStuBDay;
	pCurString[4] = &m_strClassNum;
	pCurString[5] = &m_strSpecialtyNum;
	pCurString[6] = &m_strCollegeNum;
	pCurString[7] = &m_strGradeNum;
	pCurString[8] = &m_strDuty;
	pCurString[9] = &m_strDormPos;
	pCurString[10] = &m_strRoomNum;
}

BEGIN_MESSAGE_MAP(CStudentInfoDlg, CDialog)
	//{{AFX_MSG_MAP(CStudentInfoDlg)
	ON_EN_CHANGE(IDC_DORM_POS, OnColDataChanged)
	ON_CBN_DROPDOWN(IDC_CLASS_NUM, OnDropdownClassNum)
	ON_EN_CHANGE(IDC_COLLEGE_NUM, OnColDataChanged)
	ON_EN_CHANGE(IDC_DUTY, OnColDataChanged)
	ON_EN_CHANGE(IDC_ROOM_NUM, OnColDataChanged)
	ON_EN_CHANGE(IDC_GRADE_NUM, OnColDataChanged)
	ON_EN_CHANGE(IDC_SPECIALTY_NUM, OnColDataChanged)
	ON_EN_CHANGE(IDC_STD_ID, OnColDataChanged)
	ON_EN_CHANGE(IDC_STU_BD, OnColDataChanged)
	ON_EN_CHANGE(IDC_DORM_POS, OnColDataChanged)
	ON_EN_CHANGE(IDC_STU_NAME, OnColDataChanged)
	ON_EN_CHANGE(IDC_STU_SEX, OnColDataChanged)

	ON_CBN_DROPDOWN(IDC_GRADE_NUM, OnDropdownComboBox)
	ON_CBN_DROPDOWN(IDC_SPECIALTY_NUM, OnDropdownComboBox)

	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoDlg message handlers

BOOL CStudentInfoDlg::IsCurDateChanged()
{
	return m_bIsCurDlgChanged;
}

void CStudentInfoDlg::OnColDataChanged() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	m_bIsCurDlgChanged = TRUE;
}


void CStudentInfoDlg::OnOK()
{
	UpdateData(TRUE);
	CString strSQLCondition;
	CString strQuotationMark;
	CString* pCurColName = NULL;
	CString strEqualMark;
	CString strCommaMark;
	CString ** pCurStuInfo = NULL;
	CString strSQLHead;
	CString strSQLTail;
	CString strBracketFront;
	CString strBracketBack;

	int i = 0;
	int j = 0;
	//以下将所有列属性进入数组
	CArray <CString, LPCTSTR> strAllSQLColAry;


	if (TRUE == IsComBoxbeFilled())
	{
		strEqualMark.LoadString(IDS_EQUAL_MARK);
		strAllSQLColAry.SetSize(COLNUM - 1);
		pCurColName = strAllSQLColAry.GetData();
		strQuotationMark.LoadString(IDS_QUOTATION_MARK);
		strCommaMark.LoadString(IDS_COMMA_MARK);
		strBracketFront.LoadString(IDS_BRACKET_MARK_FRONT);
		strBracketBack.LoadString(IDS_BRACKET_MARK_BACK);

		pCurStuInfo = m_OneStuInfosPointerAry.GetData();

		//所有表名载入
		for (i = 1; i < COLNUM; i++)
		{
			pCurColName[i - 1].LoadString(COLSTARTNUM + i);
		}

		m_strClassNum = m_pStuInfo->GetClassNum(m_strClassNum);	
		m_strSpecialtyNum = m_pStuInfo->GetSpecialityNum(m_strSpecialtyNum);
		m_strGradeNum = m_pStuInfo->GetGradeNum(m_strGradeNum);

	//	AfxMessageBox(m_strGradeNum);
		if (FALSE == m_bIsIsertNewRecord) // 是否插入新的记录
		{
			if (TRUE == m_bIsCurDlgChanged) //不是插入新记录,但是当前记录已改变
			{
				// 构造新的SQL语句	
				strSQLHead.LoadString(IDS_SQL_MODIFY_STU_HEAD);
				strSQLTail.LoadString(IDS_SQL_MODIFY_STU_TAIL);

				strSQLCondition = strSQLHead;	
				//构造新的SQL语句中的条件部分
				for (j = 1; j < COLNUM - 2; j++)
				{
					// 表名+等号+引号+值+引号+逗号
					strSQLCondition = strSQLCondition + pCurColName[j] + strEqualMark + 
									strQuotationMark + *pCurStuInfo[j] + strQuotationMark + strCommaMark;   
				}
				// 补最后一个条件
				strSQLCondition = strSQLCondition + pCurColName[j] + strEqualMark + 
						strQuotationMark + *pCurStuInfo[j] + strQuotationMark;   
				
				strSQLCondition = strSQLCondition + strSQLTail +
							strQuotationMark + *pCurStuInfo[0] + strQuotationMark;
			}

		}
		else // 插入新记录
		{
			// 构造新的SQL语句
			strSQLHead.LoadString(IDS_SQL_INSERT_STU);
			strSQLCondition = strSQLHead + strBracketFront;
			
			for (j = 0; j < COLNUM - 2; j++)
			{
				// 表名+逗号
				strSQLCondition = strSQLCondition + pCurColName[j] + strCommaMark;   
			}
			// 补最后一个条件
			strSQLCondition = strSQLCondition + pCurColName[j];   

			//尾括号
			strSQLCondition = strSQLCondition + strBracketBack;
			strSQLTail.LoadString(IDS_SQL_VALUE);
			// values + (
			strSQLCondition = strSQLCondition + strSQLTail + strBracketFront;
			for (j = 0; j < COLNUM - 2; j++)
			{
				// 引号+值+引号+逗号
				strSQLCondition = strSQLCondition + strQuotationMark + *pCurStuInfo[j] + strQuotationMark + strCommaMark;   
			}
			//补最后一个值 + )
			strSQLCondition = strSQLCondition + *pCurStuInfo[j] + strBracketBack;   

		}
		m_strModifySQL = strSQLCondition;
		CDialog::OnOK();
	}
	else 
	{
		AfxMessageBox("有尚未选择的下拉菜单!");
	}
}

void CStudentInfoDlg::FillClassComboBox()
{
	UpdateData(TRUE);
	CString strCradeID;
	CString strSpecialityID;
	CClassInfoStringAry aryCurClassName;
	CString* pCUrClassName;
	CString strCurKey;
	
	m_strGradeNum = m_pStuInfo->GetGradeNum(m_strGradeNum);
	m_strSpecialtyNum = m_pStuInfo->GetSpecialityNum(m_strSpecialtyNum);

	strCradeID = m_strGradeNum;
	strSpecialityID = m_strSpecialtyNum;
	strCurKey = strSpecialityID + strCradeID;

//	m_ClassInfoMap.Lookup(strCurKey, aryCurClassName);
	m_pStuInfo->GetClassMapInfo(strCurKey, aryCurClassName);
	pCUrClassName = aryCurClassName.GetData();
//	m_ctrlClassName.ResetContent();
	for (int i = 0; i < aryCurClassName.GetSize(); i++)
	{
		m_ctrlClassName.AddString(pCUrClassName[i]);
	}
}

void CStudentInfoDlg::SetStuIDReadOnly()
{
	m_bIsUseReadOnly = TRUE;	
}

void CStudentInfoDlg::SetNewRecordSign(BOOL _bIsInsertNew)
{
	m_bIsIsertNewRecord = _bIsInsertNew;
}


CString CStudentInfoDlg::GetModifySQL()
{
	return m_strModifySQL;
}


void CStudentInfoDlg::OnDropdownClassNum() 
{
	// TODO: Add your control notification handler code here
	CString strCurKey;
	CString strCradeID;
	CString strSpecialityID;

	if ((CB_ERR != m_ctrlSpecialtyName.GetCurSel())&&
					(CB_ERR != m_ctrlGradeName.GetCurSel()))
	{
		m_ctrlClassName.ResetContent();
		FillClassComboBox();	
	}

}

BOOL CStudentInfoDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	// TODO: Add extra initialization here
//	GetAllDBInfo();
	if (m_bIsUseReadOnly)
	{
		m_ctrlStuID.SetReadOnly(TRUE);
	}
	m_ctrlSex.AddString("男");
	m_ctrlSex.AddString("女");

	CString strCulName;
	CStudentStudyInfo * pCulStudyInfo = NULL;
	pCulStudyInfo = m_pStuInfo->GetGradeInfos();

	for (int i = 0; i < m_pStuInfo->GetGradeCounts(); i++)
	{
		strCulName = pCulStudyInfo[i].GetNameInfo();
		m_ctrlGradeName.AddString(strCulName);
	}

	pCulStudyInfo = m_pStuInfo->GetSpecialityInfos();

	for (int j = 0; j < m_pStuInfo->GetSpecialityCounts(); j++)
	{
		strCulName = pCulStudyInfo[j].GetNameInfo();
		m_ctrlSpecialtyName.AddString(strCulName);
	}
		
	FillClassComboBox();
	return TRUE;  // return TRUE unless you set the focus to a control

⌨️ 快捷键说明

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