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

📄 assigndlg.cpp

📁 我上载了那么多怎么都说已经有上载的啦
💻 CPP
字号:
// AssignDlg.cpp : implementation file
//

#include "stdafx.h"
#include "gpmis.h"
#include "AssignDlg.h"
#include "global.h"
#include "teacher.h"
#include "student.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAssignDlg dialog
#define NUM1_COLUMNS	5
static _TCHAR *_gszLabel1[NUM1_COLUMNS] =
{
    _T("教师"), _T("职称"), _T("本科生"), _T("二学位"), _T("指定")
};
static int _gnFmt1[NUM1_COLUMNS] = 
{
	LVCFMT_CENTER, LVCFMT_CENTER, LVCFMT_CENTER , LVCFMT_CENTER, LVCFMT_CENTER
};
static int _gnWidth1[NUM1_COLUMNS] = 
{
	60, 78, 64, 60, 200
};


CAssignDlg::CAssignDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAssignDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAssignDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CAssignDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAssignDlg)
	DDX_Control(pDX, IDC_STUDENT_COMBO, m_cmbStudent);
	DDX_Control(pDX, IDC_TEACHER_LIST, m_lvwTeacher);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAssignDlg, CDialog)
	//{{AFX_MSG_MAP(CAssignDlg)
	ON_NOTIFY(LVN_ENDLABELEDIT, IDC_TEACHER_LIST, OnEndlabeleditTeacherList)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_TEACHER_LIST, OnItemchangedTeacherList)
	ON_BN_CLICKED(ID_SET, OnSet)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAssignDlg message handlers

BOOL CAssignDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CStudentList& list = CGlobal::GetInstance().m_studentList;
	POSITION pos = list.GetHeadPosition();
	m_nUnderG = 0;
	m_nSecondD = 0;
	m_nSum = 0;
	int i = 0;
	while( pos )
	{
		CStudent* pStudent = list.GetNext(pos);
		if( pStudent )
		{
			if( pStudent->GetClass().Find("二") >0 )
				m_nSecondD++;
			else 
				m_nUnderG++;
			m_nSum++;
			CString str;
			str.Format("%s:%s", pStudent->GetClass(), pStudent->GetName());
			m_cmbStudent.AddRow(i,str);
			m_cmbStudent.SetCheck(i,FALSE);
			i++;
		}
	}

	int nColumnType[64];
	nColumnType[0] = ELCT_STRING_CASE;	
	nColumnType[1] = ELCT_STRING_CASE;	
	nColumnType[2] = ELCT_INTEGER;	
	nColumnType[3] = ELCT_INTEGER;	
	nColumnType[4] = ELCT_STRING_CASE;	
	nColumnType[5] = ELCT_STRING_CASE;	
	m_lvwTeacher.SetColumnType(nColumnType);

	BOOL bCanEdit[64];
	bCanEdit[0] = FALSE;	
	bCanEdit[1] = FALSE;	
	bCanEdit[2] = TRUE;	
	bCanEdit[3] = TRUE;	
	bCanEdit[4] = FALSE;	
	bCanEdit[5] = FALSE;	
	m_lvwTeacher.SetCanEdit(bCanEdit);

	int nColumnCtrl[64];
	nColumnCtrl[0] = eLast;	
	nColumnCtrl[1] = eLast;	
	nColumnCtrl[2] = eEdit;	
	nColumnCtrl[3] = eEdit;	
	nColumnCtrl[4] = eLast;	
	nColumnCtrl[5] = eLast;	
	m_lvwTeacher.SetColumnCtrl(nColumnCtrl);

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

void CAssignDlg::DrawLabel()
{
	int i;
	LV_COLUMN lvc;

	// delete columns
	int sum = NUM1_COLUMNS;
	_TCHAR **szLabel = _gszLabel1;
	int *nWidth = _gnWidth1;
	int *nFmt = _gnFmt1;
	for(i = 0; i<sum; i++)
	{
		m_lvwTeacher.DeleteColumn(0);
	}
	// insert columns
	lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

	for(i = 0; i<sum; i++)
	{
		lvc.iSubItem = i;
		lvc.pszText = szLabel[i];
		lvc.cx = nWidth[i];
		lvc.fmt = nFmt[i];
		m_lvwTeacher.InsertColumn(i,&lvc);
	}

	m_lvwTeacher.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
//	m_lvwTeacher.EnableToolTips(FALSE);
	m_lvwTeacher.SetSortFirstCol(TRUE);

}

void CAssignDlg::DrawList()
{
	LV_ITEM lvi;
	int i = 0;
	char cNum[100];
	CString strName;

	// delete list items
	m_lvwTeacher.DeleteAllItems();

	lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
	lvi.iSubItem = 0;
	lvi.iImage = 0;
	lvi.stateMask = LVIS_STATEIMAGEMASK;
	lvi.state = INDEXTOSTATEIMAGEMASK(1);

	CTeacherList& teacherList = CGlobal::GetInstance().m_teacherList;
	CTeacherList list;

	POSITION pos = teacherList.GetHeadPosition();
	POSITION HPos = NULL;
	POSITION MPos = NULL;
	while( pos )
	{
		CTeacher* pTeacher = teacherList.GetNext(pos);
		if( pTeacher )
		{
			CString key, strLevel = "";
			key.Format("%d", pTeacher->GetTitleID());
			CGlobal::GetInstance().m_LevelMap.Lookup(key,strLevel);
			if( strLevel == "高级" )
			{
				if( HPos == NULL )
					list.AddHead(pTeacher);
				else
					list.InsertBefore(HPos, pTeacher);
			}
			else if( strLevel == "副高" )
			{
				if( MPos == NULL )
				{
					list.AddTail(pTeacher);
					HPos = list.GetTailPosition();
				}
				else
					list.InsertBefore(MPos, pTeacher);
			}
			else
			{
				list.AddTail(pTeacher);
				if( MPos == NULL )
				{
					MPos = list.GetTailPosition();
				}
			}
		}
	}

	int nNum = list.GetCount();
	int nU1 = m_nUnderG/nNum;
	int nU2 = m_nUnderG%nNum;
	int nS1 = m_nSecondD/nNum;
	int nS2 = m_nSecondD%nNum;
	pos = list.GetHeadPosition();
	while( pos )
	{
		CTeacher* pTeacher = list.GetNext(pos);
		if( pTeacher )
		{
			sprintf(cNum,"%s",pTeacher->GetName());
			lvi.iItem = i;
			lvi.pszText = (LPTSTR)cNum;
			m_lvwTeacher.InsertItem(&lvi);

			CString strTemp;
			strTemp.Format("%s",pTeacher->GetTitle(CGlobal::GetInstance().m_TitleMap));
			m_lvwTeacher.SetItemText(i, 1, strTemp);

			strTemp.Format("%d",nU1);
			if( nU2 > 0 )
			{
				strTemp.Format("%d",nU1+1);
				nU2--;
			}
			m_lvwTeacher.SetItemText(i, 2, strTemp);

			strTemp.Format("%d",nS1);
			if( nS2 > 0 )
			{
				strTemp.Format("%d",nS1+1);
				nS2--;
			}
			m_lvwTeacher.SetItemText(i, 3, strTemp);

			i++;
		}
	}
	sprintf(cNum,"总计: ");
	lvi.iItem = i;
	lvi.pszText = (LPTSTR)cNum;
	m_lvwTeacher.InsertItem(&lvi);

	CString strTemp;
	strTemp.Format("%d/%d",m_nUnderG, m_nUnderG);
	m_lvwTeacher.SetItemText(i, 2, strTemp);
	strTemp.Format("%d/%d",m_nSecondD, m_nSecondD);
	m_lvwTeacher.SetItemText(i, 3, strTemp);

	m_lvwTeacher.SetDisableRow(i,i);
	
	m_lvwTeacher.SetItemState(0,LVIS_FOCUSED|LVIS_SELECTED,LVIS_FOCUSED|LVIS_SELECTED);
}

void CAssignDlg::OnEndlabeleditTeacherList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	LV_DISPINFO *plvDispInfo = (LV_DISPINFO *)pNMHDR;
	LV_ITEM	*plvItem = &plvDispInfo->item;

	if( plvItem->iSubItem == 2 && plvItem->pszText != NULL )
	{
		int nUnderG = 0;
		for(int i = 0; i < m_lvwTeacher.GetItemCount() - 1; i++ )
		{
			nUnderG += atoi(m_lvwTeacher.GetItemText(i, 2));
		}
		CString strTemp;
		strTemp.Format("%d/%d",nUnderG, m_nUnderG);
		m_lvwTeacher.SetItemText(i, 2, strTemp);
	}
	else if( plvItem->iSubItem == 3 && plvItem->pszText != NULL )
	{
	}

	*pResult = 0;
}

void CAssignDlg::OnItemchangedTeacherList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	LV_DISPINFO *plvDispInfo = (LV_DISPINFO *)pNMHDR;
	LV_ITEM	*plvItem = &plvDispInfo->item;

	int nUnderG = 0;
	for(int i = 0; i < m_lvwTeacher.GetItemCount() - 1; i++ )
	{
		nUnderG += atoi(m_lvwTeacher.GetItemText(i, 2));
	}
	CString strTemp;
	strTemp.Format("%d/%d",nUnderG, m_nUnderG);
	m_lvwTeacher.SetItemText(i, 2, strTemp);
	
	*pResult = 0;
}

void CAssignDlg::OnSet() 
{
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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