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

📄 mission.cpp

📁 为学校教导用的排课系统。
💻 CPP
字号:
// Mission.cpp: implementation of the CMission class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Lesson.h"
#include "Mission.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CMission,CObject,1)//支持序列化

CMission::CMission()
{
	m_Grade=0;
	m_Class=0;
	m_Num=0;
	m_Name.Empty();
	m_Subject.Empty();
	m_Info.InitInstance();
	m_pTeacher=NULL;
	for(int i=0;i<WEEK;i++)
		for(int j=0;j<STANZA;j++)
			m_Sit[i][j]=0;
}

CMission::~CMission()
{

}

BOOL CMission::Copy(const CMission *Mission)
{
	if(Mission==NULL)return FALSE;
	m_Name=Mission->m_Name;
	m_Grade=Mission->m_Grade;
	m_Class=Mission->m_Class;
	m_Num=Mission->m_Num;
	m_Subject=Mission->m_Subject;
	m_pTeacher=Mission->m_pTeacher;
	m_Request.RemoveAll();
	m_Request.Append(Mission->m_Request);
	for(int i=0;i<WEEK;i++)
		for(int j=0;j<STANZA;j++)
			m_Sit[i][j]=Mission->m_Sit[i][j];
	return TRUE;
}

void CMission::INFO::InitInstance()
{	
	int i; 
	for(i=0;i<STANZA;i++)
		m_StanzaLesson[i]=0;
	for(i=0;i<WEEK;i++)
		m_WeekLesson[i]=0;
	m_Num=0;
}

int CMission::Compute()
{
	m_Info.InitInstance();
	for(int i=0;i<WEEK;i++)
		for(int j=0;j<STANZA;j++)
			if(m_Sit[i][j])
			{
				m_Info.m_WeekLesson[i]++;
				m_Info.m_StanzaLesson[j]++;
				m_Info.m_Num++;
			}
	return m_Info.m_Num;
}

void CMission::Serialize(CArchive &ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
		ar<<m_Name<<m_Grade<<m_Class<<m_Num<<m_Subject<<m_pTeacher;
		for(int i=0;i<WEEK;i++)
			for(int j=0;j<STANZA;j++)
				ar<<m_Sit[i][j];
		m_Info.Serialize(ar);
		m_Request.Serialize(ar);
	}
	else
	{
		// TODO: add loading code here
		ar>>m_Name>>m_Grade>>m_Class>>m_Num>>m_Subject>>m_pTeacher;
		for(int i=0;i<WEEK;i++)
			for(int j=0;j<STANZA;j++)
				ar>>m_Sit[i][j];
		m_Info.Serialize(ar);
		m_Request.Serialize(ar);
	}
}

void CMission::UpdateList(CListCtrl *pList)
{
	int nIndex=pList->GetItemCount();
	LV_ITEM item;
	char constr[200];
	CString str;
	item.mask=LVIF_TEXT;
	strcpy(constr,m_Subject);
	item.pszText=constr;
	pList->InsertItem(nIndex,constr);
	
	str.Format("%d年级",m_Grade);
	strcpy(constr,str);
	item.pszText=constr;
	pList->SetItemText(nIndex,1,constr);

	str.Format("%d班",m_Class);
	strcpy(constr,str);
	item.pszText=constr;
	pList->SetItemText(nIndex,2,constr);

	str.Format("%d",m_Num);
	strcpy(constr,str);
	item.pszText=constr;
	pList->SetItemText(nIndex,3,constr);

	str.Empty();
	for(int i=0;i<m_Request.GetSize();i++)
	{
		str+="|";
		str+=m_Request.GetAt(i);
	}
	strcpy(constr,str);
	item.pszText=constr;
	pList->SetItemText(nIndex,4,constr);
}

BOOL CMission::Isable()
{
	CString str;int Stanza,Num,Week;
	for(int i=m_Request.GetSize()-1;i>=0;i--)
	{
		str=m_Request.GetAt(i);
		if(!(str.Left(2)).CompareNoCase("第"))
		{
			str.Delete(0,2);
			Stanza=atoi(str);
			str.Delete(0,7);
			Num=atoi(str);
			int nIndex=0;
			for(int w=0;w<WEEK;w++)
			{
				if(m_Sit[w][Stanza-1])
					nIndex++;
			}
			if(nIndex>Num)
				return FALSE;
		}
		if(!(str.Left(2)).CompareNoCase("星"))
		{
			str.Delete(0,4);
			Week=atoi(str);
			str.Delete(0,5);
			Num=atoi(str);
			int nIndex=0;
			for(int s=0;s<STANZA;s++)
			{
				if(m_Sit[Week-1][s]==TRUE)
					nIndex++;
			}
			if(nIndex>Num)
				return FALSE;
		}
		if(!str.Left(2).CompareNoCase("固"))
		{
			str.Delete(0,6);
			Week=atoi(str);
			str.Delete(0,3);
			Stanza=atoi(str);
			if(m_Sit[Week-1][Stanza-1]==FALSE)
				return FALSE;			
		}
	}
	return TRUE;
}

void CMission::INFO::Serialize(CArchive &ar)
{
	if (ar.IsStoring())
	{
		ar<<m_Num;
		for(int i=0;i<WEEK;i++)
			ar<<m_WeekLesson[i];
	}
	else
	{
		ar>>m_Num;
		for(int i=0;i<WEEK;i++)
			ar>>m_WeekLesson[i];
	}
	
}

⌨️ 快捷键说明

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